119 lines
2.7 KiB
Plaintext
119 lines
2.7 KiB
Plaintext
#ifndef _IMAGE_IMAGEHEADER_HPP_
|
|
#define _IMAGE_IMAGEHEADER_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_PUREVIEWOFFILE_HPP_
|
|
#include <common/pview.hpp>
|
|
#endif
|
|
#ifndef _IMAGE_HARDWARE_HPP_
|
|
#include <image/hardware.hpp>
|
|
#endif
|
|
#ifndef _IMAGE_IMAGEFLAGS_HPP_
|
|
#include <image/iflags.hpp>
|
|
#endif
|
|
|
|
class ImageHeader : private _IMAGE_FILE_HEADER
|
|
{
|
|
public:
|
|
ImageHeader(void);
|
|
ImageHeader(const ImageHeader &someImageHeader);
|
|
~ImageHeader();
|
|
ImageHeader &operator=(const ImageHeader &someImageHeader);
|
|
WORD operator==(const ImageHeader &someImageHeader);
|
|
WORD operator<<(PureViewOfFile &pureView);
|
|
Hardware hardware(void)const;
|
|
WORD sectionCount(void)const;
|
|
DWORD timeDateStamp(void)const;
|
|
DWORD pointerSymbolTable(void)const;
|
|
DWORD symbolCount(void)const;
|
|
WORD sizeOptionalHeader(void)const;
|
|
ImageFlags imageFlags(void)const;
|
|
private:
|
|
};
|
|
|
|
inline
|
|
ImageHeader::ImageHeader(void)
|
|
{
|
|
::memset((char*)&((_IMAGE_FILE_HEADER&)*this),0,sizeof(_IMAGE_FILE_HEADER));
|
|
}
|
|
|
|
inline
|
|
ImageHeader::ImageHeader(const ImageHeader &someImageHeader)
|
|
{
|
|
*this=someImageHeader;
|
|
}
|
|
|
|
inline
|
|
ImageHeader::~ImageHeader()
|
|
{
|
|
}
|
|
|
|
inline
|
|
ImageHeader &ImageHeader::operator=(const ImageHeader &someImageHeader)
|
|
{
|
|
::memcpy((char*)&((_IMAGE_FILE_HEADER&)*this),(char*)&((_IMAGE_FILE_HEADER&)someImageHeader),sizeof(_IMAGE_FILE_HEADER));
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
WORD ImageHeader::operator==(const ImageHeader &someImageHeader)
|
|
{
|
|
return (hardware()==someImageHeader.hardware()&&
|
|
sectionCount()==someImageHeader.sectionCount()&&
|
|
timeDateStamp()==someImageHeader.timeDateStamp()&&
|
|
pointerSymbolTable()==someImageHeader.pointerSymbolTable()&&
|
|
symbolCount()==someImageHeader.symbolCount()&&
|
|
sizeOptionalHeader()==someImageHeader.sizeOptionalHeader()&&
|
|
imageFlags()==someImageHeader.imageFlags());
|
|
}
|
|
|
|
inline
|
|
WORD ImageHeader::operator<<(PureViewOfFile &pureView)
|
|
{
|
|
return sizeof(_IMAGE_FILE_HEADER)==pureView.read((char*)&((_IMAGE_FILE_HEADER&)*this),sizeof(_IMAGE_FILE_HEADER));
|
|
}
|
|
|
|
inline
|
|
Hardware ImageHeader::hardware(void)const
|
|
{
|
|
return Hardware(_IMAGE_FILE_HEADER::Machine);
|
|
}
|
|
|
|
inline
|
|
WORD ImageHeader::sectionCount(void)const
|
|
{
|
|
return _IMAGE_FILE_HEADER::NumberOfSections;
|
|
}
|
|
|
|
inline
|
|
DWORD ImageHeader::timeDateStamp(void)const
|
|
{
|
|
return _IMAGE_FILE_HEADER::TimeDateStamp;
|
|
}
|
|
|
|
inline
|
|
DWORD ImageHeader::pointerSymbolTable(void)const
|
|
{
|
|
return _IMAGE_FILE_HEADER::PointerToSymbolTable;
|
|
}
|
|
|
|
inline
|
|
DWORD ImageHeader::symbolCount(void)const
|
|
{
|
|
return _IMAGE_FILE_HEADER::NumberOfSymbols;
|
|
}
|
|
|
|
inline
|
|
WORD ImageHeader::sizeOptionalHeader(void)const
|
|
{
|
|
return _IMAGE_FILE_HEADER::SizeOfOptionalHeader;
|
|
}
|
|
|
|
inline
|
|
ImageFlags ImageHeader::imageFlags(void)const
|
|
{
|
|
return ImageFlags(_IMAGE_FILE_HEADER::Characteristics);
|
|
}
|
|
#endif
|