Changeset 131 for trunk/include/helpers/exeh.h
- Timestamp:
- Jan 9, 2002, 10:17:41 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/helpers/exeh.h
r130 r131 32 32 #define EXEH_HEADER_INCLUDED 33 33 34 #pragma pack(1) 35 34 36 /******************************************************************** 35 37 * 36 * Executable helpers38 * DOS exe header 37 39 * 38 40 ********************************************************************/ 39 40 #pragma pack(1)41 41 42 42 /* … … 82 82 } DOSEXEHEADER, *PDOSEXEHEADER; 83 83 84 /******************************************************************** 85 * 86 * New Executable (NE) 87 * 88 ********************************************************************/ 89 84 90 // NE and LX OS types 85 91 #define NEOS_UNKNOWN 0 … … 107 113 ULONG ulChecksum; // 08: MS: reserved, OS/2: checksum ne_crc 108 114 USHORT usFlags; // 0c: flags ne_flags 109 /*110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 */115 #ifndef NENOTP // do not conflict with toolkit exe defs 116 #define NENOTP 0x8000 // Not a process == library 117 #define NENOTMPSAFE 0x4000 // Process is not multi-processor safe 118 // (Win3.1 SDK: "reserved") 119 #define NEIERR 0x2000 // Errors in image 120 #define NEBOUND 0x0800 // Bound Family/API 121 // (Win3.1 SDK: "first segment contains code 122 // that loads the application") 123 #define NEAPPTYP 0x0700 // Application type mask 124 // (Win3.1 SDK: "reserved") 125 #define NENOTWINCOMPAT 0x0100 // Not compatible with P.M. Windowing 126 // (Win3.1 SDK: "reserved") 127 #define NEWINCOMPAT 0x0200 // Compatible with P.M. Windowing 128 // (Win3.1 SDK: "reserved") 129 #define NEWINAPI 0x0300 // Uses P.M. Windowing API 130 // (Win3.1 SDK: "reserved") 131 #define NEFLTP 0x0080 // Floating-point instructions 132 #define NEI386 0x0040 // 386 instructions 133 #define NEI286 0x0020 // 286 instructions 134 #define NEI086 0x0010 // 8086 instructions 135 #define NEPROT 0x0008 // Runs in protected mode only 136 // (Win3.1 SDK: "reserved") 137 #define NEPPLI 0x0004 // Per-Process Library Initialization 138 // (Win3.1 SDK: "reserved") 139 #define NEINST 0x0002 // Instance data 140 #define NESOLO 0x0001 // Solo data (single data) 141 #endif 136 142 USHORT usAutoDataSegNo; // 0e: auto-data seg no. ne_autodata 137 143 // (Win3.1 SDK: "0 if both NEINST and NESOLO are cleared") … … 181 187 182 188 /* 189 *@@ OS2NERESTBLENTRY: 190 * OS/2 NE resource table entry. 191 * 192 *@@added V0.9.16 (2001-12-08) [umoeller] 193 */ 194 195 typedef struct _OS2NERESTBLENTRY 196 { 197 USHORT usType; 198 USHORT usID; 199 } OS2NERESTBLENTRY, *POS2NERESTBLENTRY; 200 201 /* 202 *@@ OS2NESEGMENT: 203 * OS/2 NE segment definition. 204 * 205 *@@added V0.9.16 (2001-12-08) [umoeller] 206 */ 207 208 typedef struct _OS2NESEGMENT // New .EXE segment table entry 209 { 210 USHORT ns_sector; // File sector of start of segment 211 USHORT ns_cbseg; // Number of bytes in file 212 USHORT ns_flags; // Attribute flags 213 USHORT ns_minalloc; // Minimum allocation in bytes 214 } OS2NESEGMENT, *POS2NESEGMENT; 215 216 /******************************************************************** 217 * 218 * Linear Executable (LX) 219 * 220 ********************************************************************/ 221 222 /* 183 223 *@@ LXHEADER: 184 224 * linear executable (LX) header format, … … 204 244 ULONG ulModuleVersion; // 0c: e32_ver module version 205 245 ULONG ulFlags; // 10: e32_mflags module flags 206 /* #define E32NOTP 0x8000L // Library Module - used as NENOTP 207 #define E32NOLOAD 0x2000L // Module not Loadable 208 #define E32PMAPI 0x0300L // Uses PM Windowing API 209 #define E32PMW 0x0200L // Compatible with PM Windowing 210 #define E32NOPMW 0x0100L // Incompatible with PM Windowing 211 #define E32NOEXTFIX 0x0020L // NO External Fixups in .EXE 212 #define E32NOINTFIX 0x0010L // NO Internal Fixups in .EXE 213 #define E32SYSDLL 0x0008L // System DLL, Internal Fixups discarded 214 #define E32LIBINIT 0x0004L // Per-Process Library Initialization 215 #define E32LIBTERM 0x40000000L // Per-Process Library Termination 216 #define E32APPMASK 0x0300L // Application Type Mask 217 */ 246 #ifndef E32NOTP // do not conflict with toolkit exe defs 247 #define E32NOTP 0x8000L // Library Module - used as NENOTP 248 #define E32NOLOAD 0x2000L // Module not Loadable 249 #define E32PMAPI 0x0300L // Uses PM Windowing API 250 #define E32PMW 0x0200L // Compatible with PM Windowing 251 #define E32NOPMW 0x0100L // Incompatible with PM Windowing 252 #define E32NOEXTFIX 0x0020L // NO External Fixups in .EXE 253 #define E32NOINTFIX 0x0010L // NO Internal Fixups in .EXE 254 #define E32SYSDLL 0x0008L // System DLL, Internal Fixups discarded 255 #define E32LIBINIT 0x0004L // Per-Process Library Initialization 256 #define E32LIBTERM 0x40000000L // Per-Process Library Termination 257 #define E32APPMASK 0x0300L // Application Type Mask 258 #endif 218 259 ULONG ulPageCount; // 14: e32_mpages no. of pages in module 219 260 ULONG ulEIPRelObj; // 18: e32_startobj obj # for IP … … 260 301 } LXHEADER, *PLXHEADER; 261 302 262 /*263 *@@ PEHEADER:264 * portable executable (PE) header format,265 * which comes after the DOS header in the266 * EXE file (at DOSEXEHEADER.ulNewHeaderOfs).267 *268 *@@added V0.9.10 (2001-04-08) [lafaix]269 */270 271 typedef struct _PEHEADER272 {273 // standard header274 ULONG ulSignature; // 00: 'P', 'E', 0, 0275 USHORT usCPU; // 04: CPU type276 USHORT usObjCount; // 06: number of object entries277 ULONG ulTimeDateStamp; // 08: store the time and date the278 // file was created or modified279 // by the linker280 ULONG ulReserved1; // 0c: reserved281 ULONG ulReserved2; // 10: reserved282 USHORT usHeaderSize; // 14: number of remaining bytes after283 // usImageFlags284 USHORT usImageFlags; // 16: flags bits for the image285 286 // optional header (always present in valid Win32 files)287 USHORT usReserved3; // 18: reserved288 USHORT usLinkerMajor; // 1a: linker major version number289 USHORT usLinkerMinor; // 1c: linker minor version number290 USHORT usReserved4; // 1e: reserved291 ULONG ulReserved5; // 20: reserved292 ULONG ulReserved6; // 24: reserved293 ULONG ulEntryPointRVA; // 28: entry point relative virtual address294 ULONG ulReserved7; // 2c: reserved295 ULONG ulReserved8; // 30: reserved296 ULONG ulImageBase; // 34:297 ULONG ulObjectAlign; // 38:298 ULONG ulFileAlign; // 3c:299 USHORT usOSMajor; // 40:300 USHORT usOSMinor; // 42:301 USHORT usUserMajor; // 44:302 USHORT usUserMinor; // 46:303 USHORT usSubSystemMajor; // 48:304 USHORT usSubSystemMinor; // 4a:305 ULONG ulReserved9; // 4c: reserved306 ULONG ulImageSize; // 50:307 ULONG ulHeaderSize; // 54:308 ULONG ulFileChecksum; // 58:309 USHORT usSubSystem; // 5c:310 USHORT usDLLFlags; // 5e:311 ULONG ulStackReserveSize; // 60:312 ULONG ulStackCommitSize; // 64:313 ULONG ulHeapReserveSize; // 68:314 ULONG ulHeapCommitSize; // 6c:315 ULONG ulReserved10; // 70: reserved316 ULONG ulInterestingRVACount;// 74:317 ULONG aulRVASize[1]; // 78: array of RVA/Size entries318 } PEHEADER, *PPEHEADER;319 320 303 // additional LX structures 321 304 … … 382 365 } LXITER, *PLXITER; 383 366 384 /*385 *@@ OS2NERESTBLENTRY:386 * OS/2 NE resource table entry.387 *388 *@@added V0.9.16 (2001-12-08) [umoeller]389 */390 391 typedef struct _OS2NERESTBLENTRY392 {393 USHORT usType;394 USHORT usID;395 } OS2NERESTBLENTRY, *POS2NERESTBLENTRY;396 397 /*398 *@@ OS2NESEGMENT:399 * OS/2 NE segment definition.400 *401 *@@added V0.9.16 (2001-12-08) [umoeller]402 */403 404 typedef struct _OS2NESEGMENT // New .EXE segment table entry405 {406 USHORT ns_sector; // File sector of start of segment407 USHORT ns_cbseg; // Number of bytes in file408 USHORT ns_flags; // Attribute flags409 USHORT ns_minalloc; // Minimum allocation in bytes410 } OS2NESEGMENT, *POS2NESEGMENT;411 412 #pragma pack()413 414 367 // object/segment flags (in NE and LX) 415 368 #define OBJWRITE 0x0002L // Writeable Object … … 424 377 #define RNDISCARD 0xF000 // Discard priority level for resource 425 378 426 // EXE format 427 #define EXEFORMAT_OLDDOS 1 428 #define EXEFORMAT_NE 2 429 #define EXEFORMAT_PE 3 430 #define EXEFORMAT_LX 4 431 #define EXEFORMAT_TEXT_BATCH 5 432 #define EXEFORMAT_TEXT_CMD 6 // REXX or plain OS/2 batch 433 #define EXEFORMAT_COM 7 // added V0.9.16 (2002-01-04) [umoeller] 434 435 // target OS (in NE and LX) 436 #define EXEOS_DOS3 1 437 #define EXEOS_DOS4 2 // there is a flag for this in NE 438 #define EXEOS_OS2 3 439 #define EXEOS_WIN16 4 440 #define EXEOS_WIN386 5 // according to IBM, there are flags 441 // for this both in NE and LX 442 #define EXEOS_WIN32 6 379 /******************************************************************** 380 * 381 * Portable Executable (PE) 382 * 383 ********************************************************************/ 384 385 /* 386 *@@ IMAGE_FILE_HEADER: 387 * first part of PE header (standard header). 388 * 389 *@@added V0.9.16 (2002-01-09) [umoeller] 390 */ 391 392 typedef struct _IMAGE_FILE_HEADER 393 { 394 USHORT usMachine; // CPU type 395 #define IMAGE_FILE_MACHINE_UNKNOWN 0 396 #define IMAGE_FILE_MACHINE_I860 0x14d 397 #define IMAGE_FILE_MACHINE_I386 0x14c 398 #define IMAGE_FILE_MACHINE_R3000 0x162 399 #define IMAGE_FILE_MACHINE_R4000 0x166 400 #define IMAGE_FILE_MACHINE_R10000 0x168 401 #define IMAGE_FILE_MACHINE_ALPHA 0x184 402 #define IMAGE_FILE_MACHINE_POWERPC 0x1F0 403 USHORT usNumberOfSections; 404 ULONG ulTimeDateStamp; 405 ULONG ulPointerToSymbolTable; 406 ULONG ulNumberOfSymbols; 407 USHORT usSizeOfOptionalHeader; 408 USHORT fsCharacteristics; 409 #define IMAGE_FILE_RELOCS_STRIPPED 1 // No relocation info 410 #define IMAGE_FILE_EXECUTABLE_IMAGE 2 411 #define IMAGE_FILE_LINE_NUMS_STRIPPED 4 412 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8 413 #define IMAGE_FILE_16BIT_MACHINE 0x40 414 #define IMAGE_FILE_BYTES_REVERSED_LO 0x80 415 #define IMAGE_FILE_32BIT_MACHINE 0x100 416 #define IMAGE_FILE_DEBUG_STRIPPED 0x200 417 #define IMAGE_FILE_SYSTEM 0x1000 418 #define IMAGE_FILE_DLL 0x2000 419 #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 420 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 421 422 typedef struct _IMAGE_DATA_DIRECTORY 423 { 424 ULONG VirtualAddress; 425 ULONG Size; 426 } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; 427 428 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 429 430 /* 431 *@@ IMAGE_OPTIONAL_HEADER: 432 * second part of PE header (optional header). 433 * 434 *@@added V0.9.16 (2002-01-09) [umoeller] 435 */ 436 437 typedef struct _IMAGE_OPTIONAL_HEADER 438 { 439 // Standard fields 440 USHORT Magic; // 00 441 #define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b 442 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 443 BYTE MajorLinkerVersion; // 02 444 BYTE MinorLinkerVersion; // 03 445 ULONG SizeOfCode; // 04 446 ULONG SizeOfInitializedData; // 08 447 ULONG SizeOfUninitializedData; // 0C 448 ULONG AddressOfEntryPoint; // 10 449 ULONG BaseOfCode; // 14 450 ULONG BaseOfData; // 18 451 452 // NT additional fields 453 ULONG ImageBase; // 1C 454 ULONG SectionAlignment; // 20 455 ULONG FileAlignment; // 24 456 USHORT MajorOperatingSystemVersion; // 28 457 USHORT MinorOperatingSystemVersion; // 2A 458 USHORT MajorImageVersion; // 2C 459 USHORT MinorImageVersion; // 2E 460 USHORT MajorSubsystemVersion; // 30 461 USHORT MinorSubsystemVersion; // 32 462 ULONG Reserved1; // 34 463 ULONG SizeOfImage; // 38 464 ULONG SizeOfHeaders; // 3C 465 ULONG CheckSum; // 40 466 USHORT usSubsystem; // 44 467 #define IMAGE_SUBSYSTEM_UNKNOWN 0 468 #define IMAGE_SUBSYSTEM_NATIVE 1 469 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Windows GUI subsystem 470 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Windows character subsystem 471 #define IMAGE_SUBSYSTEM_OS2_CUI 5 472 #define IMAGE_SUBSYSTEM_POSIX_CUI 7 473 USHORT DllCharacteristics; // 46 474 ULONG SizeOfStackReserve; // 48 475 ULONG SizeOfStackCommit; // 4C 476 ULONG SizeOfHeapReserve; // 50 477 ULONG SizeOfHeapCommit; // 54 478 ULONG LoaderFlags; // 58 479 ULONG NumberOfRvaAndSizes; // 5C 480 // 60: 481 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 482 } IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER; 483 484 // indices into the DataDirectory array 485 #define IMAGE_FILE_EXPORT_DIRECTORY 0 486 #define IMAGE_FILE_IMPORT_DIRECTORY 1 487 #define IMAGE_FILE_RESOURCE_DIRECTORY 2 488 #define IMAGE_FILE_EXCEPTION_DIRECTORY 3 489 #define IMAGE_FILE_SECURITY_DIRECTORY 4 490 #define IMAGE_FILE_BASE_RELOCATION_TABLE 5 491 #define IMAGE_FILE_DEBUG_DIRECTORY 6 492 #define IMAGE_FILE_DESCRIPTION_STRING 7 493 #define IMAGE_FILE_MACHINE_VALUE 8 // Mips 494 #define IMAGE_FILE_THREAD_LOCAL_STORAGE 9 495 #define IMAGE_FILE_CALLBACK_DIRECTORY 10 496 497 // directory entries, indices into the DataDirectory array 498 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 499 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 500 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 501 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 502 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 503 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 504 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 505 #define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 506 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // (MIPS GP) 507 #define IMAGE_DIRECTORY_ENTRY_TLS 9 508 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 509 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 510 #define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address Table 511 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 512 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 513 514 /* 515 *@@ PEHEADER: 516 * portable executable (PE) header format, 517 * which comes after the DOS header in the 518 * EXE file (at DOSEXEHEADER.ulNewHeaderOfs). 519 * 520 *@@added V0.9.16 (2002-01-09) [umoeller] 521 */ 522 523 typedef struct _PEHEADER 524 { 525 // standard header 526 ULONG ulSignature; // 00: 'P', 'E', 0, 0 527 IMAGE_FILE_HEADER // 04 528 FileHeader; 529 IMAGE_OPTIONAL_HEADER // 18 530 OptionalHeader; 531 532 } PEHEADER, *PPEHEADER; 533 534 /* 535 #define PE_HEADER(module) \ 536 ((IMAGE_NT_HEADERS*)((LPBYTE)(module) + \ 537 (((IMAGE_DOS_HEADER*)(module))->e_lfanew))) 538 539 #define PE_SECTIONS(module) \ 540 ((IMAGE_SECTION_HEADER*)((LPBYTE)&PE_HEADER(module)->OptionalHeader + \ 541 PE_HEADER(module)->FileHeader.SizeOfOptionalHeader)) 542 543 #define RVA_PTR(module,field) ((LPBYTE)(module) + PE_HEADER(module)->field) 544 */ 545 546 // Section header format 547 548 #define IMAGE_SIZEOF_SHORT_NAME 8 549 550 /* 551 *@@ IMAGE_SECTION_HEADER: 552 * comes right after PEHEADER in executable. 553 * 554 *@@added V0.9.16 (2002-01-09) [umoeller] 555 */ 556 557 typedef struct _IMAGE_SECTION_HEADER 558 { 559 BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; // 00: 560 union 561 { 562 ULONG PhysicalAddress; // 04: 563 ULONG VirtualSize; // 04: 564 } Misc; 565 ULONG VirtualAddress; // 08: 566 ULONG ulSizeOfRawData; // 0C: 567 ULONG ulPointerToRawData; // 10: 568 ULONG PointerToRelocations; // 14: 569 ULONG PointerToLinenumbers; // 18: 570 USHORT NumberOfRelocations; // 1C: 571 USHORT NumberOfLinenumbers; // 1E: 572 ULONG flCharacteristics; // 20: 573 // #define IMAGE_SCN_TYPE_REG 0x00000000 - Reserved 574 // #define IMAGE_SCN_TYPE_DSECT 0x00000001 - Reserved 575 // #define IMAGE_SCN_TYPE_NOLOAD 0x00000002 - Reserved 576 // #define IMAGE_SCN_TYPE_GROUP 0x00000004 - Reserved 577 // #define IMAGE_SCN_TYPE_NO_PAD 0x00000008 - Reserved 578 // #define IMAGE_SCN_TYPE_COPY 0x00000010 - Reserved 579 #define IMAGE_SCN_CNT_CODE 0x00000020 580 #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 581 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 582 #define IMAGE_SCN_LNK_OTHER 0x00000100 583 #define IMAGE_SCN_LNK_INFO 0x00000200 584 // #define IMAGE_SCN_TYPE_OVER 0x00000400 - Reserved 585 #define IMAGE_SCN_LNK_REMOVE 0x00000800 586 #define IMAGE_SCN_LNK_COMDAT 0x00001000 587 // 0x00002000 - Reserved 588 // #define IMAGE_SCN_MEM_PROTECTED 0x00004000 - Obsolete 589 #define IMAGE_SCN_MEM_FARDATA 0x00008000 590 // #define IMAGE_SCN_MEM_SYSHEAP 0x00010000 - Obsolete 591 #define IMAGE_SCN_MEM_PURGEABLE 0x00020000 592 #define IMAGE_SCN_MEM_16BIT 0x00020000 593 #define IMAGE_SCN_MEM_LOCKED 0x00040000 594 #define IMAGE_SCN_MEM_PRELOAD 0x00080000 595 #define IMAGE_SCN_ALIGN_1BYTES 0x00100000 596 #define IMAGE_SCN_ALIGN_2BYTES 0x00200000 597 #define IMAGE_SCN_ALIGN_4BYTES 0x00300000 598 #define IMAGE_SCN_ALIGN_8BYTES 0x00400000 599 #define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default 600 #define IMAGE_SCN_ALIGN_32BYTES 0x00600000 601 #define IMAGE_SCN_ALIGN_64BYTES 0x00700000 602 // 0x00800000 - Unused 603 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000 604 #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 605 #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 606 #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 607 #define IMAGE_SCN_MEM_SHARED 0x10000000 608 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 609 #define IMAGE_SCN_MEM_READ 0x40000000 610 #define IMAGE_SCN_MEM_WRITE 0x80000000 611 // 24: 612 } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; 613 614 #define IMAGE_SIZEOF_SECTION_HEADER 40 615 616 /* 617 *@@ IMAGE_IMPORT_BY_NAME: 618 * import name entry. 619 * 620 *@@added V0.9.16 (2002-01-09) [umoeller] 621 */ 622 623 typedef struct _IMAGE_IMPORT_BY_NAME 624 { 625 USHORT Hint; 626 BYTE Name[1]; 627 } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; 628 629 /* 630 *@@ IMAGE_THUNK_DATA: 631 * import thunk. 632 * 633 *@@added V0.9.16 (2002-01-09) [umoeller] 634 */ 635 636 typedef struct _IMAGE_THUNK_DATA 637 { 638 union 639 { 640 PBYTE ForwarderString; 641 PFN Function; 642 ULONG Ordinal; 643 PIMAGE_IMPORT_BY_NAME 644 AddressOfData; 645 } u1; 646 } IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA; 647 648 /* 649 *@@ IMAGE_IMPORT_DESCRIPTOR: 650 * import module directory. 651 * 652 *@@added V0.9.16 (2002-01-09) [umoeller] 653 */ 654 655 typedef struct _IMAGE_IMPORT_DESCRIPTOR 656 { 657 union 658 { 659 ULONG Characteristics; // 0 for terminating null import descriptor 660 PIMAGE_THUNK_DATA 661 OriginalFirstThunk; // RVA to original unbound IAT 662 } u; 663 ULONG TimeDateStamp; // 0 if not bound, 664 // -1 if bound, and real date\time stamp 665 // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 666 // (new BIND) 667 // otherwise date/time stamp of DLL bound to 668 // (Old BIND) 669 ULONG ForwarderChain; // -1 if no forwarders 670 ULONG Name; 671 // RVA to IAT (if bound this IAT has actual addresses) 672 PIMAGE_THUNK_DATA 673 FirstThunk; 674 } IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR; 675 676 #define IMAGE_ORDINAL_FLAG 0x80000000 677 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0) 678 #define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff) 679 680 /* 681 *@@ IMAGE_EXPORT_DIRECTORY: 682 * export module directory 683 * 684 *@@added V0.9.16 (2002-01-09) [umoeller] 685 */ 686 687 typedef struct _IMAGE_EXPORT_DIRECTORY 688 { 689 ULONG Characteristics; 690 ULONG TimeDateStamp; 691 USHORT MajorVersion; 692 USHORT MinorVersion; 693 ULONG Name; 694 ULONG Base; 695 ULONG NumberOfFunctions; 696 ULONG NumberOfNames; 697 PULONG *AddressOfFunctions; 698 PULONG *AddressOfNames; 699 PUSHORT *AddressOfNameOrdinals; 700 // u_char ModuleName[1]; 701 } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; 702 703 /* 704 *@@ IMAGE_RESOURCE_DIRECTORY: 705 * 706 *@@added V0.9.16 (2002-01-09) [umoeller] 707 */ 708 709 typedef struct _IMAGE_RESOURCE_DIRECTORY 710 { 711 ULONG Characteristics; 712 ULONG TimeDateStamp; 713 USHORT MajorVersion; 714 USHORT MinorVersion; 715 USHORT NumberOfNamedEntries; 716 USHORT NumberOfIdEntries; 717 // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; 718 } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; 719 720 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 721 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 722 723 /* 724 *@@ IMAGE_RESOURCE_DIRECTORY_ENTRY: 725 * 726 *@@added V0.9.16 (2002-01-09) [umoeller] 727 */ 728 729 typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY 730 { 731 union 732 { 733 struct 734 { 735 unsigned NameOffset:31; 736 unsigned NameIsString:1; 737 } s; 738 ULONG Name; 739 USHORT Id; 740 } u1; 741 union 742 { 743 ULONG OffsetToData; 744 struct 745 { 746 unsigned OffsetToDirectory:31; 747 unsigned DataIsDirectory:1; 748 } s; 749 } u2; 750 } IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY; 751 752 /* 753 *@@ IMAGE_RESOURCE_DIRECTORY_STRING: 754 * 755 *@@added V0.9.16 (2002-01-09) [umoeller] 756 */ 757 758 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING 759 { 760 USHORT Length; 761 CHAR NameString[1]; 762 } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; 763 764 typedef USHORT WCHAR; 765 766 /* 767 *@@ IMAGE_RESOURCE_DIR_STRING_U: 768 * 769 *@@added V0.9.16 (2002-01-09) [umoeller] 770 */ 771 772 typedef struct _IMAGE_RESOURCE_DIR_STRING_U 773 { 774 USHORT Length; 775 WCHAR NameString[ 1 ]; 776 } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; 777 778 /* 779 *@@ IMAGE_RESOURCE_DATA_ENTRY: 780 * 781 *@@added V0.9.16 (2002-01-09) [umoeller] 782 */ 783 784 typedef struct _IMAGE_RESOURCE_DATA_ENTRY 785 { 786 ULONG OffsetToData; 787 ULONG Size; 788 ULONG CodePage; 789 ULONG ResourceHandle; 790 } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; 791 792 /* 793 *@@ IMAGE_BASE_RELOCATION: 794 * 795 *@@added V0.9.16 (2002-01-09) [umoeller] 796 */ 797 798 typedef struct _IMAGE_BASE_RELOCATION 799 { 800 ULONG VirtualAddress; 801 ULONG SizeOfBlock; 802 USHORT TypeOffset[1]; 803 } IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION; 804 805 /* 806 *@@ IMAGE_LOAD_CONFIG_DIRECTORY: 807 * 808 *@@added V0.9.16 (2002-01-09) [umoeller] 809 */ 810 811 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY 812 { 813 ULONG Characteristics; 814 ULONG TimeDateStamp; 815 USHORT MajorVersion; 816 USHORT MinorVersion; 817 ULONG GlobalFlagsClear; 818 ULONG GlobalFlagsSet; 819 ULONG CriticalSectionDefaultTimeout; 820 ULONG DeCommitFreeBlockThreshold; 821 ULONG DeCommitTotalFreeThreshold; 822 PVOID LockPrefixTable; 823 ULONG MaximumAllocationSize; 824 ULONG VirtualMemoryThreshold; 825 ULONG ProcessHeapFlags; 826 ULONG Reserved[ 4 ]; 827 } IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY; 828 829 typedef VOID (* /* CALLBACK */ PIMAGE_TLS_CALLBACK)(PVOID DllHandle, 830 ULONG Reason, 831 PVOID Reserved); 832 833 /* 834 *@@ IMAGE_TLS_DIRECTORY: 835 * 836 *@@added V0.9.16 (2002-01-09) [umoeller] 837 */ 838 839 typedef struct _IMAGE_TLS_DIRECTORY 840 { 841 ULONG StartAddressOfRawData; 842 ULONG EndAddressOfRawData; 843 PULONG AddressOfIndex; 844 PIMAGE_TLS_CALLBACK *AddressOfCallBacks; 845 ULONG SizeOfZeroFill; 846 ULONG Characteristics; 847 } IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY; 848 849 /* 850 *@@ IMAGE_DEBUG_DIRECTORY: 851 * the IMAGE_DEBUG_DIRECTORY data directory points 852 * to an array of these structures. 853 * 854 *@@added V0.9.16 (2002-01-09) [umoeller] 855 */ 856 857 typedef struct _IMAGE_DEBUG_DIRECTORY 858 { 859 ULONG Characteristics; 860 ULONG TimeDateStamp; 861 USHORT MajorVersion; 862 USHORT MinorVersion; 863 ULONG Type; 864 ULONG SizeOfData; 865 ULONG AddressOfRawData; 866 ULONG ulPointerToRawData; 867 } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; 868 869 /* 870 * The type field above can take these (plus a few other 871 * irrelevant) values. 872 */ 873 #define IMAGE_DEBUG_TYPE_UNKNOWN 0 874 #define IMAGE_DEBUG_TYPE_COFF 1 875 #define IMAGE_DEBUG_TYPE_CODEVIEW 2 876 #define IMAGE_DEBUG_TYPE_FPO 3 877 #define IMAGE_DEBUG_TYPE_MISC 4 878 #define IMAGE_DEBUG_TYPE_EXCEPTION 5 879 #define IMAGE_DEBUG_TYPE_FIXUP 6 880 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 881 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 882 883 // generic relocation types 884 #define IMAGE_REL_BASED_ABSOLUTE 0 885 #define IMAGE_REL_BASED_HIGH 1 886 #define IMAGE_REL_BASED_LOW 2 887 #define IMAGE_REL_BASED_HIGHLOW 3 888 #define IMAGE_REL_BASED_HIGHADJ 4 889 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 890 #define IMAGE_REL_BASED_SECTION 6 891 #define IMAGE_REL_BASED_REL 7 892 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 893 #define IMAGE_REL_BASED_IA64_IMM64 9 // yes, 9 too 894 #define IMAGE_REL_BASED_DIR64 10 895 #define IMAGE_REL_BASED_HIGH3ADJ 11 896 897 // I386 relocation types 898 #define IMAGE_REL_I386_ABSOLUTE 0 899 #define IMAGE_REL_I386_DIR16 1 900 #define IMAGE_REL_I386_REL16 2 901 #define IMAGE_REL_I386_DIR 6 902 #define IMAGE_REL_I386_DIR32NB 7 903 #define IMAGE_REL_I386_SEG12 9 904 #define IMAGE_REL_I386_SECTION 10 905 #define IMAGE_REL_I386_SECREL 11 906 #define IMAGE_REL_I386_REL 20 907 908 // MIPS relocation types 909 #define IMAGE_REL_MIPS_ABSOLUTE 0x0000 910 #define IMAGE_REL_MIPS_REFHALF 0x0001 911 #define IMAGE_REL_MIPS_REFWORD 0x0002 912 #define IMAGE_REL_MIPS_JMPADDR 0x0003 913 #define IMAGE_REL_MIPS_REFHI 0x0004 914 #define IMAGE_REL_MIPS_REFLO 0x0005 915 #define IMAGE_REL_MIPS_GPREL 0x0006 916 #define IMAGE_REL_MIPS_LITERAL 0x0007 917 #define IMAGE_REL_MIPS_SECTION 0x000A 918 #define IMAGE_REL_MIPS_SECREL 0x000B 919 #define IMAGE_REL_MIPS_SECRELLO 0x000C 920 #define IMAGE_REL_MIPS_SECRELHI 0x000D 921 #define IMAGE_REL_MIPS_JMPADDR16 0x0010 922 #define IMAGE_REL_MIPS_REFWORDNB 0x0022 923 #define IMAGE_REL_MIPS_PAIR 0x0025 924 925 // ALPHA relocation types 926 #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000 927 #define IMAGE_REL_ALPHA_REFLONG 0x0001 928 #define IMAGE_REL_ALPHA_REFQUAD 0x0002 929 #define IMAGE_REL_ALPHA_GPREL 0x0003 930 #define IMAGE_REL_ALPHA_LITERAL 0x0004 931 #define IMAGE_REL_ALPHA_LITUSE 0x0005 932 #define IMAGE_REL_ALPHA_GPDISP 0x0006 933 #define IMAGE_REL_ALPHA_BRADDR 0x0007 934 #define IMAGE_REL_ALPHA_HINT 0x0008 935 #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009 936 #define IMAGE_REL_ALPHA_REFHI 0x000A 937 #define IMAGE_REL_ALPHA_REFLO 0x000B 938 #define IMAGE_REL_ALPHA_PAIR 0x000C 939 #define IMAGE_REL_ALPHA_MATCH 0x000D 940 #define IMAGE_REL_ALPHA_SECTION 0x000E 941 #define IMAGE_REL_ALPHA_SECREL 0x000F 942 #define IMAGE_REL_ALPHA_REFLONGNB 0x0010 943 #define IMAGE_REL_ALPHA_SECRELLO 0x0011 944 #define IMAGE_REL_ALPHA_SECRELHI 0x0012 945 #define IMAGE_REL_ALPHA_REFQ3 0x0013 946 #define IMAGE_REL_ALPHA_REFQ2 0x0014 947 #define IMAGE_REL_ALPHA_REFQ1 0x0015 948 #define IMAGE_REL_ALPHA_GPRELLO 0x0016 949 #define IMAGE_REL_ALPHA_GPRELHI 0x0017 950 951 // PowerPC relocation types 952 #define IMAGE_REL_PPC_ABSOLUTE 0x0000 953 #define IMAGE_REL_PPC_ADDR64 0x0001 954 #define IMAGE_REL_PPC_ADDR 0x0002 955 #define IMAGE_REL_PPC_ADDR24 0x0003 956 #define IMAGE_REL_PPC_ADDR16 0x0004 957 #define IMAGE_REL_PPC_ADDR14 0x0005 958 #define IMAGE_REL_PPC_REL24 0x0006 959 #define IMAGE_REL_PPC_REL14 0x0007 960 #define IMAGE_REL_PPC_TOCREL16 0x0008 961 #define IMAGE_REL_PPC_TOCREL14 0x0009 962 #define IMAGE_REL_PPC_ADDR32NB 0x000A 963 #define IMAGE_REL_PPC_SECREL 0x000B 964 #define IMAGE_REL_PPC_SECTION 0x000C 965 #define IMAGE_REL_PPC_IFGLUE 0x000D 966 #define IMAGE_REL_PPC_IMGLUE 0x000E 967 #define IMAGE_REL_PPC_SECREL16 0x000F 968 #define IMAGE_REL_PPC_REFHI 0x0010 969 #define IMAGE_REL_PPC_REFLO 0x0011 970 #define IMAGE_REL_PPC_PAIR 0x0012 971 #define IMAGE_REL_PPC_SECRELLO 0x0013 972 #define IMAGE_REL_PPC_SECRELHI 0x0014 973 #define IMAGE_REL_PPC_GPREL 0x0015 974 #define IMAGE_REL_PPC_TYPEMASK 0x00FF 975 // modifier bits 976 #define IMAGE_REL_PPC_NEG 0x0100 977 #define IMAGE_REL_PPC_BRTAKEN 0x0200 978 #define IMAGE_REL_PPC_BRNTAKEN 0x0400 979 #define IMAGE_REL_PPC_TOCDEFN 0x0800 980 981 // SH3 ? relocation type 982 #define IMAGE_REL_SH3_ABSOLUTE 0x0000 983 #define IMAGE_REL_SH3_DIRECT16 0x0001 984 #define IMAGE_REL_SH3_DIRECT 0x0002 985 #define IMAGE_REL_SH3_DIRECT8 0x0003 986 #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004 987 #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005 988 #define IMAGE_REL_SH3_DIRECT4 0x0006 989 #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007 990 #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008 991 #define IMAGE_REL_SH3_PCREL8_WORD 0x0009 992 #define IMAGE_REL_SH3_PCREL8_LONG 0x000A 993 #define IMAGE_REL_SH3_PCREL12_WORD 0x000B 994 #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C 995 #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D 996 #define IMAGE_REL_SH3_SECTION 0x000E 997 #define IMAGE_REL_SH3_SECREL 0x000F 998 #define IMAGE_REL_SH3_DIRECT32_NB 0x0010 999 1000 // ARM (Archimedes?) relocation types 1001 #define IMAGE_REL_ARM_ABSOLUTE 0x0000 1002 #define IMAGE_REL_ARM_ADDR 0x0001 1003 #define IMAGE_REL_ARM_ADDR32NB 0x0002 1004 #define IMAGE_REL_ARM_BRANCH24 0x0003 1005 #define IMAGE_REL_ARM_BRANCH11 0x0004 1006 #define IMAGE_REL_ARM_SECTION 0x000E 1007 #define IMAGE_REL_ARM_SECREL 0x000F 1008 1009 // IA64 relocation types 1010 #define IMAGE_REL_IA64_ABSOLUTE 0x0000 1011 #define IMAGE_REL_IA64_IMM14 0x0001 1012 #define IMAGE_REL_IA64_IMM22 0x0002 1013 #define IMAGE_REL_IA64_IMM64 0x0003 1014 #define IMAGE_REL_IA64_DIR 0x0004 1015 #define IMAGE_REL_IA64_DIR64 0x0005 1016 #define IMAGE_REL_IA64_PCREL21B 0x0006 1017 #define IMAGE_REL_IA64_PCREL21M 0x0007 1018 #define IMAGE_REL_IA64_PCREL21F 0x0008 1019 #define IMAGE_REL_IA64_GPREL22 0x0009 1020 #define IMAGE_REL_IA64_LTOFF22 0x000A 1021 #define IMAGE_REL_IA64_SECTION 0x000B 1022 #define IMAGE_REL_IA64_SECREL22 0x000C 1023 #define IMAGE_REL_IA64_SECREL64I 0x000D 1024 #define IMAGE_REL_IA64_SECREL 0x000E 1025 #define IMAGE_REL_IA64_LTOFF64 0x000F 1026 #define IMAGE_REL_IA64_DIR32NB 0x0010 1027 #define IMAGE_REL_IA64_RESERVED_11 0x0011 1028 #define IMAGE_REL_IA64_RESERVED_12 0x0012 1029 #define IMAGE_REL_IA64_RESERVED_13 0x0013 1030 #define IMAGE_REL_IA64_RESERVED_14 0x0014 1031 #define IMAGE_REL_IA64_RESERVED_15 0x0015 1032 #define IMAGE_REL_IA64_RESERVED_16 0x0016 1033 #define IMAGE_REL_IA64_ADDEND 0x001F 1034 1035 /* 1036 *@@ IMAGE_SEPARATE_DEBUG_HEADER: 1037 * structure that appears at the very start of a .DBG file. 1038 * 1039 *@@added V0.9.16 (2002-01-09) [umoeller] 1040 */ 1041 1042 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER 1043 { 1044 USHORT Signature; 1045 USHORT Flags; 1046 USHORT Machine; 1047 USHORT Characteristics; 1048 ULONG TimeDateStamp; 1049 ULONG CheckSum; 1050 ULONG ImageBase; 1051 ULONG SizeOfImage; 1052 ULONG NumberOfSections; 1053 ULONG ExportedNamesSize; 1054 ULONG DebugDirectorySize; 1055 ULONG Reserved[ 3 ]; 1056 } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; 1057 1058 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 1059 1060 /* 1061 *@@ MESSAGE_RESOURCE_ENTRY: 1062 * 1063 *@@added V0.9.16 (2002-01-09) [umoeller] 1064 */ 1065 1066 typedef struct tagMESSAGE_RESOURCE_ENTRY 1067 { 1068 USHORT Length; 1069 USHORT Flags; 1070 BYTE Text[1]; 1071 } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY; 1072 #define MESSAGE_RESOURCE_UNICODE 0x0001 1073 1074 /* 1075 *@@ MESSAGE_RESOURCE_BLOCK: 1076 * 1077 *@@added V0.9.16 (2002-01-09) [umoeller] 1078 */ 1079 1080 typedef struct tagMESSAGE_RESOURCE_BLOCK 1081 { 1082 ULONG LowId; 1083 ULONG HighId; 1084 ULONG OffsetToEntries; 1085 } MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK; 1086 1087 /* 1088 *@@ MESSAGE_RESOURCE_DATA: 1089 * 1090 *@@added V0.9.16 (2002-01-09) [umoeller] 1091 */ 1092 1093 typedef struct tagMESSAGE_RESOURCE_DATA 1094 { 1095 ULONG NumberOfBlocks; 1096 MESSAGE_RESOURCE_BLOCK Blocks[ 1 ]; 1097 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; 1098 1099 /* 1100 *@@ IMAGE_IMPORT_MODULE_DIRECTORY: 1101 * 1102 *@@added V0.9.16 (2002-01-09) [umoeller] 1103 */ 1104 1105 typedef struct _IMAGE_IMPORT_MODULE_DIRECTORY // tagImportDirectory 1106 { 1107 ULONG dwRVAFunctionNameList; 1108 ULONG dwUseless1; 1109 ULONG dwUseless2; 1110 ULONG dwRVAModuleName; 1111 ULONG dwRVAFunctionAddressList; 1112 } IMAGE_IMPORT_MODULE_DIRECTORY, *PIMAGE_IMPORT_MODULE_DIRECTORY; 1113 1114 #pragma pack() 1115 1116 /******************************************************************** 1117 * 1118 * Declarations and APIs 1119 * 1120 ********************************************************************/ 443 1121 444 1122 #ifndef __STRIP_DOWN_EXECUTABLE__ … … 455 1133 { 456 1134 // executable opened by doshOpen; 457 // still NULLHANDLE for .COM, .BAT, .CMD files 458 // (V0.9.16) 1135 // note, NULL for .COM, .BAT, .CMD files (V0.9.16) 459 1136 PXFILE pFile; 460 1137 … … 481 1158 PPEHEADER pPEHeader; 482 1159 ULONG cbPEHeader; 483 484 // module analysis (always set): 1160 // note, this one may vary; however, all Win32 programs 1161 // will have sizeof(PEHEADER) in here since they all 1162 // use both the standard and the optional PE header 1163 1164 // module analysis (always set, otherwise error would be 1165 // returned by exehOpen): 485 1166 ULONG ulExeFormat; 486 // one of: 487 // EXEFORMAT_OLDDOS 1 488 // EXEFORMAT_NE 2 489 // EXEFORMAT_PE 3 490 // EXEFORMAT_LX 4 491 // EXEFORMAT_TEXT_BATCH 5 // for all .BAT files 492 // EXEFORMAT_TEXT_CMD 6 // for all .CMD files 493 // EXEFORMAT_COM 7 // for all .COM files 1167 #define EXEFORMAT_OLDDOS 1 1168 #define EXEFORMAT_NE 2 1169 #define EXEFORMAT_PE 3 1170 #define EXEFORMAT_LX 4 1171 #define EXEFORMAT_TEXT_BATCH 5 1172 #define EXEFORMAT_TEXT_CMD 6 // REXX or plain OS/2 batch 1173 #define EXEFORMAT_COM 7 // added V0.9.16 (2002-01-04) [umoeller] 494 1174 495 1175 BOOL fLibrary, // TRUE if this is a DLL 1176 // (works for NE, LX, PE) 496 1177 f32Bits; // TRUE if this a 32-bits module 1178 // (TRUE always for PE) 497 1179 498 1180 ULONG ulOS; 499 1181 // target operating system as flagged in one of 500 1182 // the EXE headers; one of: 501 // EXEOS_DOS3 1 // always for .BAT, possibly for .COM 502 // EXEOS_DOS4 2 // there is a flag for this in NE 503 // EXEOS_OS2 3 // always for .CMD, possibly for .COM 504 // EXEOS_WIN16 4 505 // EXEOS_WIN386 5 // according to IBM, there are flags 506 // for this both in NE and LX 507 // EXEOS_WIN32 6 1183 #define EXEOS_UNKNOWN 0 1184 // set for non-standard PE files too 1185 #define EXEOS_DOS3 1 1186 #define EXEOS_DOS4 2 1187 // there is a flag for this in NE 1188 #define EXEOS_OS2 3 1189 #define EXEOS_WIN16 4 1190 #define EXEOS_WIN386 5 1191 // according to IBM, there are flags 1192 // for this both in NE and LX 1193 #define EXEOS_WIN32_GUI 6 1194 // Win32 GUI (see IMAGE_OPTIONAL_HEADER.usSubsystem), 1195 // if PE optional header was successfully read 1196 #define EXEOS_WIN32_CLI 7 1197 // Win32 command line (see IMAGE_OPTIONAL_HEADER.usSubsystem), 1198 // if PE optional header was successfully read 508 1199 509 1200 // The following fields are only set after 510 // an extra call to exehQueryBldLevel :1201 // an extra call to exehQueryBldLevel (NE and LX only): 511 1202 512 1203 PSZ pszDescription; … … 531 1222 pszFixpak; 532 1223 533 // the following fields are set after exehLoadLXMaps 1224 // the following fields are set after exehLoadLXMaps (LX only) 534 1225 BOOL fLXMapsLoaded; // TRUE after good exehLoadLXMaps 535 1226 RESOURCETABLEENTRY *pRsTbl; // pLXHeader->ulResTblCnt … … 537 1228 OBJECTPAGETABLEENTRY *pObjPageTbl; // pLXHeader->ulPageCount 538 1229 539 // the following fields are set after exehLoadOS2NEMaps 1230 // the following fields are set after exehLoadOS2NEMaps (OS/2 NE only) 540 1231 BOOL fOS2NEMapsLoaded; // TRUE after good exehLoadOS2NEMaps 541 1232 POS2NERESTBLENTRY paOS2NEResTblEntry; … … 594 1285 #define WINRT_ACCELERATOR 9 595 1286 #define WINRT_RCDATA 10 1287 #define WINRT_MESSAGELIST 11 // Win32 1288 #define WINRT_GROUP_CURSOR 12 // Win32 1289 #define WINRT_GROUP_ICON 13 // Win32 596 1290 597 1291 /*
Note:
See TracChangeset
for help on using the changeset viewer.