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

119 lines
2.7 KiB
C++

#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