Files
Work/image/VXDHDR.HPP
2024-08-07 09:16:27 -04:00

395 lines
7.6 KiB
C++

#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