#ifndef _IMAGE_EXPORTDESCRIPTOR_HPP_ #define _IMAGE_EXPORTDESCRIPTOR_HPP_ #ifndef _COMMON_PUREDWORD_HPP_ #include #endif #ifndef _COMMON_PUREWORD_HPP_ #include #endif #ifndef _COMMON_PUREVIEWOFFILE_HPP_ #include #endif #ifndef _COMMON_ARRAY_HPP_ #include #endif #ifndef _IMAGE_IMAGESECTIONHEADERS_HPP_ #include #endif #ifndef _IMAGE_IMAGEEXPORTDIRECTORY_HPP_ #include #endif #ifndef _IMAGE_IMAGEEXPORTDESCRIPTOR_HPP_ #include #endif class ImageExportDescriptors : public ImageExportDirectory, public Array { public: ImageExportDescriptors(void); ImageExportDescriptors(const ImageExportDescriptors &someImageExportDescriptors); virtual ~ImageExportDescriptors(); ImageExportDescriptors &operator=(const ImageExportDescriptors &someImageExportDecsriptors); WORD operator==(const ImageExportDescriptors &someImageExportDescriptors)const; WORD loadImageExports(PureViewOfFile &pureView,ImageSectionHeaders &imageSectionHeaders,WORD sortFlag); WORD locateImageExportName(String imageExportName,ImageExportDescriptor &imageExportDescriptor,DWORD &exportIndex); WORD locateImageExportOrdinal(DWORD exportOrdinal,ImageExportDescriptor &imageExportDescriptor,DWORD &exportIndex); private: enum {OrdinalPrefix='@'}; WORD loadExportNames(Array &exportNames,ImageSectionHeaders &imageSectionHeaders,PureViewOfFile &pureView); WORD loadExportOrdinals(Array &exportOrdinals,ImageSectionHeaders &imageSectionHeaders,PureViewOfFile &pureView); WORD loadExportFunctions(Array &exportFunctions,ImageSectionHeaders &imageSectionHeaders,PureViewOfFile &pureView); WORD combineExportDescriptors(Array &exportNames,Array &exportOrdinals,Array &exportFunctions); WORD makeOrdinalValue(String imageExportName,WORD &exportOrdinal)const; }; inline ImageExportDescriptors::ImageExportDescriptors(void) { } inline ImageExportDescriptors::ImageExportDescriptors(const ImageExportDescriptors &someImageExportDescriptors) { *this=someImageExportDescriptors; } inline ImageExportDescriptors::~ImageExportDescriptors() { } inline ImageExportDescriptors &ImageExportDescriptors::operator=(const ImageExportDescriptors &someImageExportDescriptors) { (Array&)*this=(Array&)someImageExportDescriptors; return *this; } inline WORD ImageExportDescriptors::operator==(const ImageExportDescriptors &someImageExportDescriptors)const { return (Array&)*this==(Array&)someImageExportDescriptors; } inline WORD ImageExportDescriptors::makeOrdinalValue(String imageExportName,WORD &exportOrdinal)const { if(imageExportName.isNull())return FALSE; if(OrdinalPrefix!=imageExportName[(DWORD)0])return FALSE; exportOrdinal=(int)imageExportName.betweenString(OrdinalPrefix,0).toInt(); return TRUE; } #endif