home *** CD-ROM | disk | FTP | other *** search
- unit pelib;
-
- interface
-
- uses Windows;
-
- const
- IMAGE_DOS_SIGNATURE = $5A4D; { MZ }
- IMAGE_OS2_SIGNATURE = $454E; { NE }
- IMAGE_OS2_SIGNATURE_LE = $454C; { LE }
- IMAGE_VXD_SIGNATURE = $454C; { LE }
- IMAGE_NT_SIGNATURE = $00004550; { PE00 }
-
- IMAGE_SIZEOF_SHORT_NAME = 8;
- IMAGE_SIZEOF_SECTION_HEADER = 40;
- IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
- IMAGE_RESOURCE_NAME_IS_STRING = $80000000;
- IMAGE_RESOURCE_DATA_IS_DIRECTORY = $80000000;
- IMAGE_OFFSET_STRIP_HIGH = $7FFFFFFF;
-
- type
- PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
- IMAGE_DOS_HEADER = packed record { DOS .EXE header }
- e_magic : WORD; { Magic number }
- e_cblp : WORD; { Bytes on last page of file }
- e_cp : WORD; { Pages in file }
- e_crlc : WORD; { Relocations }
- e_cparhdr : WORD; { Size of header in paragraphs }
- e_minalloc : WORD; { Minimum extra paragraphs needed }
- e_maxalloc : WORD; { Maximum extra paragraphs needed }
- e_ss : WORD; { Initial (relative) SS value }
- e_sp : WORD; { Initial SP value }
- e_csum : WORD; { Checksum }
- e_ip : WORD; { Initial IP value }
- e_cs : WORD; { Initial (relative) CS value }
- e_lfarlc : WORD; { File address of relocation table }
- e_ovno : WORD; { Overlay number }
- e_res : packed array [0..3] of WORD; { Reserved words }
- e_oemid : WORD; { OEM identifier (for e_oeminfo) }
- e_oeminfo : WORD; { OEM information; e_oemid specific }
- e_res2 : packed array [0..9] of WORD; { Reserved words }
- e_lfanew : Longint; { File address of new exe header }
- end;
-
- PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER;
- IMAGE_FILE_HEADER = packed record
- Machine : WORD;
- NumberOfSections : WORD;
- TimeDateStamp : DWORD;
- PointerToSymbolTable : DWORD;
- NumberOfSymbols : DWORD;
- SizeOfOptionalHeader : WORD;
- Characteristics : WORD;
- end;
-
- PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY;
- IMAGE_DATA_DIRECTORY = packed record
- VirtualAddress : DWORD;
- Size : DWORD;
- end;
-
- PIMAGE_OPTIONAL_HEADER = ^IMAGE_OPTIONAL_HEADER;
- IMAGE_OPTIONAL_HEADER = packed record
- { Standard fields. }
- Magic : WORD;
- MajorLinkerVersion : Byte;
- MinorLinkerVersion : Byte;
- SizeOfCode : DWORD;
- SizeOfInitializedData : DWORD;
- SizeOfUninitializedData : DWORD;
- AddressOfEntryPoint : DWORD;
- BaseOfCode : DWORD;
- BaseOfData : DWORD;
- { NT additional fields. }
- ImageBase : DWORD;
- SectionAlignment : DWORD;
- FileAlignment : DWORD;
- MajorOperatingSystemVersion : WORD;
- MinorOperatingSystemVersion : WORD;
- MajorImageVersion : WORD;
- MinorImageVersion : WORD;
- MajorSubsystemVersion : WORD;
- MinorSubsystemVersion : WORD;
- Reserved1 : DWORD;
- SizeOfImage : DWORD;
- SizeOfHeaders : DWORD;
- CheckSum : DWORD;
- Subsystem : WORD;
- DllCharacteristics : WORD;
- SizeOfStackReserve : DWORD;
- SizeOfStackCommit : DWORD;
- SizeOfHeapReserve : DWORD;
- SizeOfHeapCommit : DWORD;
- LoaderFlags : DWORD;
- NumberOfRvaAndSizes : DWORD;
- DataDirectory : packed array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES-1] of IMAGE_DATA_DIRECTORY;
- end;
-
- PIMAGE_SECTION_HEADER = ^IMAGE_SECTION_HEADER;
- IMAGE_SECTION_HEADER = packed record
- Name : packed array [0..IMAGE_SIZEOF_SHORT_NAME-1] of Char;
- PhysicalAddress : DWORD; // or VirtualSize (union);
- VirtualAddress : DWORD;
- SizeOfRawData : DWORD;
- PointerToRawData : DWORD;
- PointerToRelocations : DWORD;
- PointerToLinenumbers : DWORD;
- NumberOfRelocations : WORD;
- NumberOfLinenumbers : WORD;
- Characteristics : DWORD;
- end;
-
- PIMAGE_NT_HEADERS = ^IMAGE_NT_HEADERS;
- IMAGE_NT_HEADERS = packed record
- Signature : DWORD;
- FileHeader : IMAGE_FILE_HEADER;
- OptionalHeader : IMAGE_OPTIONAL_HEADER;
- end;
-
- { Import Table }
-
- PIMAGE_IMAGE_IMPORT_DESCRIPTOR =^IMAGE_IMAGE_IMPORT_DESCRIPTOR;
- IMAGE_IMAGE_IMPORT_DESCRIPTOR = packed record
- OriginalFirstThunk : DWORD;
- TimeDateStamp : DWORD;
- ForwarderChain : DWORD;
- Name1 : DWORD;
- FirstThunk : DWORD;
- end;
-
- PIMAGE_IMPORT_BY_NAME = ^IMAGE_IMPORT_BY_NAME;
- IMAGE_IMPORT_BY_NAME = packed record
- Hint : WORD;
- Name1 : array [1..150] of char;
- end;
-
-
- { Resources }
-
- PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY;
- IMAGE_RESOURCE_DIRECTORY = packed record
- Characteristics : DWORD;
- TimeDateStamp : DWORD;
- MajorVersion : WORD;
- MinorVersion : WORD;
- NumberOfNamedEntries : WORD;
- NumberOfIdEntries : WORD;
- end;
-
- PIMAGE_RESOURCE_DIRECTORY_ENTRY = ^IMAGE_RESOURCE_DIRECTORY_ENTRY;
- IMAGE_RESOURCE_DIRECTORY_ENTRY = packed record
- Name: DWORD; // Or ID: Word (Union)
- OffsetToData: DWORD;
- end;
-
- PIMAGE_RESOURCE_DATA_ENTRY = ^IMAGE_RESOURCE_DATA_ENTRY;
- IMAGE_RESOURCE_DATA_ENTRY = packed record
- OffsetToData : DWORD;
- Size : DWORD;
- CodePage : DWORD;
- Reserved : DWORD;
- end;
-
- PIMAGE_RESOURCE_DIR_STRING_U = ^IMAGE_RESOURCE_DIR_STRING_U;
- IMAGE_RESOURCE_DIR_STRING_U = packed record
- Length : WORD;
- NameString : array [0..0] of WCHAR;
- end;
-
- {
- /* Predefined resource types */
- #define RT_NEWRESOURCE 0x2000
- #define RT_ERROR 0x7fff
- #define RT_CURSOR 1
- #define RT_BITMAP 2
- #define RT_ICON 3
- #define RT_MENU 4
- #define RT_DIALOG 5
- #define RT_STRING 6
- #define RT_FONTDIR 7
- #define RT_FONT 8
- #define RT_ACCELERATORS 9
- #define RT_RCDATA 10
- #define RT_MESSAGETABLE 11
- #define RT_GROUP_CURSOR 12
- #define RT_GROUP_ICON 14
- #define RT_VERSION 16
- #define RT_NEWBITMAP (RT_BITMAP|RT_NEWRESOURCE)
- #define RT_NEWMENU (RT_MENU|RT_NEWRESOURCE)
- #define RT_NEWDIALOG (RT_DIALOG|RT_NEWRESOURCE)
-
- }
-
- type
- TResourceType = (
- rtUnknown0,
- rtCursorEntry,
- rtBitmap,
- rtIconEntry,
- rtMenu,
- rtDialog,
- rtString,
- rtFontDir,
- rtFont,
- rtAccelerators,
- rtRCData,
- rtMessageTable,
- rtCursor,
- rtUnknown13,
- rtIcon,
- rtUnknown15,
- rtVersion);
-
- { Resource Type Constants }
-
- const
- StringsPerBlock = 16;
-
- { Resource Related Structures from RESFMT.TXT in WIN32 SDK }
-
- type
-
- PIconHeader = ^TIconHeader;
- TIconHeader = packed record
- wReserved: Word; { Currently zero }
- wType: Word; { 1 for icons }
- wCount: Word; { Number of components }
- end;
-
- PIconResInfo = ^TIconResInfo;
- TIconResInfo = packed record
- bWidth: Byte;
- bHeight: Byte;
- bColorCount: Byte;
- bReserved: Byte;
- wPlanes: Word;
- wBitCount: Word;
- lBytesInRes: DWORD;
- wNameOrdinal: Word; { Points to component }
- end;
-
- PCursorResInfo = ^TCursorResInfo;
- TCursorResInfo = packed record
- wWidth: Word;
- wHeight: Word;
- wPlanes: Word;
- wBitCount: Word;
- lBytesInRes: DWORD;
- wNameOrdinal: Word; { Points to component }
- end;
-
-
- implementation
-
- end.
-