From 37e364b2c6cc7487a1c888d256a73e5337bb7189 Mon Sep 17 00:00:00 2001 From: Ash Wolf Date: Wed, 14 Jun 2023 00:50:34 +0100 Subject: initial commit --- src/T2DLL/CPEFile.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/T2DLL/CPEFile.h (limited to 'src/T2DLL/CPEFile.h') diff --git a/src/T2DLL/CPEFile.h b/src/T2DLL/CPEFile.h new file mode 100644 index 0000000..e27a1fa --- /dev/null +++ b/src/T2DLL/CPEFile.h @@ -0,0 +1,44 @@ +#pragma once +#include "common.h" + +struct RESTRACKERWORK { + int didRead; + IMAGE_RESOURCE_DIRECTORY directory; + unsigned long position; + int nextIndex; + IMAGE_RESOURCE_DIRECTORY_ENTRY entry; +}; + +class DLL_EXPORT CPEFile { +public: + CPEFile(const CPEFile&); + CPEFile& operator=(const CPEFile&); + CPEFile(); + ~CPEFile(); + + virtual BOOL Open(const char*, unsigned int, CFileException* exc = NULL); + virtual void Close(); + virtual long Seek(long offset, unsigned int from); + virtual BOOL Seek(const char* name); + virtual unsigned long GetLength(); + virtual unsigned long GetPosition(); + virtual unsigned int Read(void* buf, unsigned int len); + virtual void Write(void* buf, unsigned int len); + + BOOL EnumResource(CString& s, RESTRACKERWORK& work); + void EnterDirectory(RESTRACKERWORK& child, RESTRACKERWORK& parent); + +protected: + BOOL Init(); + BOOL EnumResourceDirectory(IMAGE_RESOURCE_DIRECTORY_ENTRY* entry, RESTRACKERWORK& work); + void GetResourceName(CString& s, IMAGE_RESOURCE_DIRECTORY_ENTRY& entry); + +private: + CFile *mFile; + IMAGE_FILE_HEADER mFileHeader; + IMAGE_SECTION_HEADER *mSectionHeaders; + DWORD mRsrcPtr; + int mRsrcIndex; + unsigned long mStartPosition; + unsigned long mLength; +}; -- cgit v1.2.3