Initial
This commit is contained in:
394
image/VXDHDR.HPP
Normal file
394
image/VXDHDR.HPP
Normal file
@@ -0,0 +1,394 @@
|
||||
#ifndef _IMAGE_VXDHEADER_HPP_
|
||||
#define _IMAGE_VXDHEADER_HPP_
|
||||
#ifndef _COMMON_WINDOWS_HPP_
|
||||
#include <common/windows.hpp>
|
||||
#endif
|
||||
#ifndef _IMAGE_DOSHEADER_HPP_
|
||||
#include <image/doshdr.hpp>
|
||||
#endif
|
||||
#ifndef _IMAGE_VXDOBJECTS_HPP_
|
||||
#include <image/vxdobjs.hpp>
|
||||
#endif
|
||||
#ifndef _IMAGE_VXDNAMES_HPP_
|
||||
#include <image/vxdnames.hpp>
|
||||
#endif
|
||||
|
||||
class PureViewOfFile;
|
||||
|
||||
class VxDHeader: private _IMAGE_VXD_HEADER, public DOSHeader, public VxDObjects, public VxDNames
|
||||
{
|
||||
public:
|
||||
enum {LESignature=IMAGE_VXD_SIGNATURE};
|
||||
VxDHeader(void);
|
||||
VxDHeader(const VxDHeader &someVxDHeader);
|
||||
virtual ~VxDHeader();
|
||||
VxDHeader &operator=(const VxDHeader &someVxDHeader);
|
||||
WORD operator==(const VxDHeader &someVxDHeader);
|
||||
WORD operator<<(PureViewOfFile &pureView);
|
||||
WORD magic(void)const;
|
||||
BYTE byteOrdering(void)const;
|
||||
BYTE wordOrdering(void)const;
|
||||
DWORD exeFormatLevel(void)const;
|
||||
WORD cpuType(void)const;
|
||||
WORD osType(void)const;
|
||||
DWORD moduleVersion(void)const;
|
||||
DWORD moduleFlags(void)const;
|
||||
DWORD moduleNumPages(void)const;
|
||||
DWORD startObjectNumberForIP(void)const;
|
||||
DWORD eip(void)const;
|
||||
DWORD startObjectNumberForSP(void)const;
|
||||
DWORD esp(void)const;
|
||||
DWORD vxdPageSize(void)const;
|
||||
DWORD vxdLastPageSize(void)const;
|
||||
DWORD fixupSectionSize(void)const;
|
||||
DWORD fixupSectionChecksum(void)const;
|
||||
DWORD loaderSectionSize(void)const;
|
||||
DWORD loaderSectionChecksum(void)const;
|
||||
DWORD objectTableOffset(void)const;
|
||||
DWORD objectCount(void)const;
|
||||
DWORD objectPageMapOffset(void)const;
|
||||
DWORD objectIteratedDataMapOffset(void)const;
|
||||
DWORD resourceTableOffset(void)const;
|
||||
DWORD resourceEntryCount(void)const;
|
||||
DWORD residentNameTableOffset(void)const;
|
||||
DWORD entryTableOffset(void)const;
|
||||
DWORD moduleDirectiveTableOffset(void)const;
|
||||
DWORD moduleDirectivesCount(void)const;
|
||||
DWORD fixupPageTableOffset(void)const;
|
||||
DWORD fixupRecordTableOffset(void)const;
|
||||
DWORD importModuleNameTableOffset(void)const;
|
||||
DWORD importModuleNameTableCount(void)const;
|
||||
DWORD importProcedureNameTableOffset(void)const;
|
||||
DWORD perPageChecksumTableOffset(void)const;
|
||||
DWORD enumeratedDataPagesOffset(void)const;
|
||||
DWORD preloadPagesCount(void)const;
|
||||
DWORD nonResidentNameTableOffset(void)const;
|
||||
DWORD nonResidentNameTableChecksum(void)const;
|
||||
DWORD automaticDataObjectNumber(void)const;
|
||||
DWORD debugInfoOffset(void)const;
|
||||
DWORD debugInfoLengthBytes(void)const;
|
||||
DWORD preloadSectionInstancePageCount(void)const;
|
||||
DWORD demandLoadSectionInstancePageCount(void)const;
|
||||
DWORD sizeHeap(void)const;
|
||||
DWORD windowsResourceOffset(void)const;
|
||||
DWORD windowsResourceLength(void)const;
|
||||
WORD vxdID(void)const;
|
||||
WORD ddkVersion(void)const;
|
||||
WORD isOkay(void)const;
|
||||
private:
|
||||
void getNames(PureViewOfFile &pureView);
|
||||
void getObjects(PureViewOfFile &pureView);
|
||||
};
|
||||
|
||||
inline
|
||||
VxDHeader::VxDHeader(void)
|
||||
{
|
||||
::memset((char*)&((_IMAGE_VXD_HEADER&)*this),0,sizeof(_IMAGE_VXD_HEADER));
|
||||
}
|
||||
|
||||
inline
|
||||
VxDHeader::VxDHeader(const VxDHeader &someVxDHeader)
|
||||
{
|
||||
*this=someVxDHeader;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::magic(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_magic;
|
||||
}
|
||||
|
||||
inline
|
||||
BYTE VxDHeader::byteOrdering(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_border;
|
||||
}
|
||||
|
||||
inline
|
||||
BYTE VxDHeader::wordOrdering(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_worder;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::exeFormatLevel(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_level;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::cpuType(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_cpu;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::osType(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_os;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::moduleVersion(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_ver;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::moduleFlags(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_mflags;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::moduleNumPages(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_mpages;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::startObjectNumberForIP(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_startobj;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::eip(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_eip;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::startObjectNumberForSP(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_stackobj;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::esp(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_esp;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::vxdPageSize(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_pagesize;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::vxdLastPageSize(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_lastpagesize;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::fixupSectionSize(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_fixupsize;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::fixupSectionChecksum(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_fixupsum;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::loaderSectionSize(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_ldrsize;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::loaderSectionChecksum(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_ldrsum;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::objectTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_objtab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::objectCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_objcnt;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::objectPageMapOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_objmap;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::objectIteratedDataMapOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_itermap;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::resourceTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_rsrctab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::resourceEntryCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_rsrccnt;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::residentNameTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_restab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::entryTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_enttab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::moduleDirectiveTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_dirtab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::moduleDirectivesCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_dircnt;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::fixupPageTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_fpagetab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::fixupRecordTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_frectab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::importModuleNameTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_impmod;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::importModuleNameTableCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_impmodcnt;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::importProcedureNameTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_impproc;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::perPageChecksumTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_pagesum;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::enumeratedDataPagesOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_datapage;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::preloadPagesCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_preload;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::nonResidentNameTableOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_nrestab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::nonResidentNameTableChecksum(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_cbnrestab;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::automaticDataObjectNumber(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_nressum;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::debugInfoOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_autodata;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::debugInfoLengthBytes(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_debuginfo;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::preloadSectionInstancePageCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_instpreload;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::demandLoadSectionInstancePageCount(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_instdemand;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::sizeHeap(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_heapsize;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::windowsResourceOffset(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_winresoff;
|
||||
}
|
||||
|
||||
inline
|
||||
DWORD VxDHeader::windowsResourceLength(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_winreslen;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::vxdID(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_devid;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::ddkVersion(void)const
|
||||
{
|
||||
return _IMAGE_VXD_HEADER::e32_ddkver;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD VxDHeader::isOkay(void)const
|
||||
{
|
||||
return LESignature==magic();
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user