#ifndef _IMAGE_VXDHEADER_HPP_ #define _IMAGE_VXDHEADER_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _IMAGE_DOSHEADER_HPP_ #include #endif #ifndef _IMAGE_VXDOBJECTS_HPP_ #include #endif #ifndef _IMAGE_VXDNAMES_HPP_ #include #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