138 lines
3.6 KiB
C++
138 lines
3.6 KiB
C++
#include <image/vxdobj.hpp>
|
|
#include <common/pview.hpp>
|
|
|
|
VxDObject::VxDObject(void)
|
|
{
|
|
zeroInit();
|
|
}
|
|
|
|
VxDObject::VxDObject(const VxDObject &someVxDObject)
|
|
{
|
|
*this=someVxDObject;
|
|
}
|
|
|
|
VxDObject::~VxDObject()
|
|
{
|
|
}
|
|
|
|
VxDObject &VxDObject::operator=(const VxDObject &someVxDObject)
|
|
{
|
|
virtualSize(someVxDObject.virtualSize());
|
|
relocationBaseAddress(someVxDObject.relocationBaseAddress());
|
|
flags(someVxDObject.flags());
|
|
pageTableIndex(someVxDObject.pageTableIndex());
|
|
pageTableEntries(someVxDObject.pageTableEntries());
|
|
reserved(someVxDObject.reserved());
|
|
return *this;
|
|
}
|
|
|
|
BOOL VxDObject::operator<<(PureViewOfFile &pureView)
|
|
{
|
|
if(!pureView.read(mVirtualSize))return FALSE;
|
|
if(!pureView.read(mRelocationBaseAddress))return FALSE;
|
|
if(!pureView.read(mFlags))return FALSE;
|
|
if(!pureView.read(mPageTableIndex))return FALSE;
|
|
if(!pureView.read(mPageTableEntries))return FALSE;
|
|
if(!pureView.read(mReserved))return FALSE;
|
|
return TRUE;
|
|
}
|
|
|
|
VxDObject::operator String(void)const
|
|
{
|
|
String strFlags;
|
|
|
|
if(has(Readable))strFlags+="Readable";
|
|
if(has(Writeable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Writeable";}
|
|
if(has(Executable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Executable";}
|
|
if(has(Resource)){if(!strFlags.isNull())strFlags+=",";strFlags+="Resource";}
|
|
if(has(Discardable)){if(!strFlags.isNull())strFlags+=",";strFlags+="Discardable";}
|
|
if(has(Shared)){if(!strFlags.isNull())strFlags+=",";strFlags+="Shared";}
|
|
if(has(HasPreloadPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasPreloadPages";}
|
|
if(has(HasInvalidPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasInvalidPages";}
|
|
if(has(HasZeroFilledPages)){if(!strFlags.isNull())strFlags+=",";strFlags+="HasZeroFilledPages";}
|
|
if(has(IsResident)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResident";}
|
|
if(has(IsResidentAndContiguous)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResidentAndContiguous";}
|
|
if(has(IsResidentAndLongLockable)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsResidentAndLongLockable";}
|
|
if(has(Reserved)){if(!strFlags.isNull())strFlags+=",";strFlags+="Reserved";}
|
|
if(has(Alias1616Required)){if(!strFlags.isNull())strFlags+=",";strFlags+="Alias1616Required";}
|
|
if(has(Big)){if(!strFlags.isNull())strFlags+=",";strFlags+="Big";}
|
|
if(has(IsCodeConforming)){if(!strFlags.isNull())strFlags+=",";strFlags+="IsCodeConforming";}
|
|
if(has(IOPrivilegeLevel)){if(!strFlags.isNull())strFlags+=",";strFlags+="IOPrivilegeLevel";}
|
|
return strFlags;
|
|
}
|
|
|
|
DWORD VxDObject::virtualSize(void)const
|
|
{
|
|
return mVirtualSize;
|
|
}
|
|
|
|
void VxDObject::virtualSize(DWORD virtualSize)
|
|
{
|
|
mVirtualSize=virtualSize;
|
|
}
|
|
|
|
DWORD VxDObject::relocationBaseAddress(void)const
|
|
{
|
|
return mRelocationBaseAddress;
|
|
}
|
|
|
|
void VxDObject::relocationBaseAddress(DWORD relocationBaseAddress)
|
|
{
|
|
mRelocationBaseAddress=relocationBaseAddress;
|
|
}
|
|
|
|
DWORD VxDObject::flags(void)const
|
|
{
|
|
return mFlags;
|
|
}
|
|
|
|
void VxDObject::flags(DWORD flags)
|
|
{
|
|
mFlags=flags;
|
|
}
|
|
|
|
DWORD VxDObject::pageTableIndex(void)const
|
|
{
|
|
return mPageTableIndex;
|
|
}
|
|
|
|
void VxDObject::pageTableIndex(DWORD pageTableIndex)
|
|
{
|
|
mPageTableIndex=pageTableIndex;
|
|
}
|
|
|
|
DWORD VxDObject::pageTableEntries(void)const
|
|
{
|
|
return mPageTableEntries;
|
|
}
|
|
|
|
void VxDObject::pageTableEntries(DWORD pageTableEntries)
|
|
{
|
|
mPageTableEntries=pageTableEntries;
|
|
}
|
|
|
|
DWORD VxDObject::reserved(void)const
|
|
{
|
|
return mReserved;
|
|
}
|
|
|
|
void VxDObject::reserved(DWORD reserved)
|
|
{
|
|
mReserved=reserved;
|
|
}
|
|
|
|
BOOL VxDObject::has(Flags flagBit)const
|
|
{
|
|
return mFlags&(DWORD)flagBit;
|
|
}
|
|
|
|
void VxDObject::zeroInit(void)
|
|
{
|
|
mVirtualSize=0;
|
|
mRelocationBaseAddress=0;
|
|
mFlags=0;
|
|
mPageTableIndex=0;
|
|
mPageTableEntries=0;
|
|
mReserved=0;
|
|
}
|