; ****************************************************************************************************** ; FILE:WINNT.INC DATE: MARCH 10, 1999 ; FUNCTION: WIN32 SYSTEM RELATED STRUCTURES AND EQUATES ; AUTHOR: SEAN M. KESSLER (CONVERTED FROM WINNT.H) ;******************************************************************************************************* ; section characteristics macros ISCODE MACRO pImageSectionHeader mov eax,[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_CNT_CODE ENDM ISDATA MACRO pImageSectionHeader LOCAL @@End ISINITDATA pImageSectionHeader jne @@End ISUINITDATA pImageSectionHeader @@End: ENDM ISINITDATA MACRO pImageSectionHeader mov eax,[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_CNT_INITIALIZED_DATA ENDM ISUINITDATA MACRO pImageSectionHeader mov eax,[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_CNT_UNINITIALIZED_DATA ENDM ISEXECUTABLE MACRO pImageSectionHeader mov eax[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_CNT_MEM_EXECUTE ENDM ISREADABLE MACRO pImageSectionHeader mov eax,[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_MEM_READ ENDM ISWRITEABLE MACRO pImageSectionHeader mov eax,[pImageSectionHeader] and [IMAGESECTIONHEADER PTR[eax]].SECTIONHEADER@@Characteristics,IMAGE_SCN_MEM_WRITE ENDM IMAGEDOSHEADER STRUC ; DOS .EXE header PIMAGEDOSHEADER TYPEDEF NEAR PTR IMAGEDOSHEADER DOSHEADER@@e_magic DW ? ; magic number DOSHEADER@@e_cblp DW ? ; bytes on last page of file DOSHEADER@@e_cp DW ? ; pages in file DOSHEADER@@e_crlc DW ? ; relocations DOSHEADER@@e_cparhdr DW ? ; size of header in paragraphs DOSHEADER@@e_minalloc DW ? ; minimum extra paragraphs needed DOSHEADER@@e_maxalloc DW ? ; maximum extra paragraphs needed DOSHEADER@@e_ss DW ? ; initial (relative) ss value DOSHEADER@@e_sp DW ? ; initial sp value DOSHEADER@@e_csum DW ? ; checksum DOSHEADER@@e_ip DW ? ; initial ip value DOSHEADER@@e_cs DW ? ; initial relative cs value DOSHEADER@@e_lfarlc DW ? ; file address of relocation table DOSHEADER@@e_ovno DW ? ; overlay number DOSHEADER@@e_res DW 04H DUP(?) ; reserved words DOSHEADER@@e_oemid DW ? ; oem identifier (for e_oeminfo) DOSHEADER@@e_oeminfo DW ? ; oem information (e_oemid specific) DOSHEADER@@e_res2 DW 0AH DUP(?) ; reserved words DOSHEADER@@e_lfanew DD ? ; file address of new exe header IMAGEDOSHEADER ENDS IMAGEFILEHEADER STRUC PIMAGEFILEHEADER TYPEDEF FAR PTR IMAGEFILEHEADER FILEHEADER@@Machine DW ? ; required architecture, 0x14C=80386 FILEHEADER@@NumberOfSections DW ? ; count of sections in file FILEHEADER@@TimeDateStamp DD ? ; number of seconds after Dec 31,1969 at 4:00 p.m. FILEHEADER@@PointerToSymbolTable DD ? ; pointer to COFF symbol table FILEHEADER@@NumberOfSymbols DD ? ; number of COFF symbols FILEHEADER@@SizeOfOptionalHeader DW ? ; size of optional header that follows FILEHEADER@@Characteristics DW ? ; 0001h=no relocations, 0002h=EXE, 2000h=DLL IMAGEFILEHEADER ENDS IMAGEDATADIRECTORY STRUC PIMAGEDATADIRECTORY TYPEDEF FAR PTR IMAGEDATADIRECTORY DATADIRECTORY@@VirtualAddress DD ? ; location of relevent quantity DATADIRECTORY@@Size DD ? ; size of the relevent quantity IMAGEDATADIRECTORY ENDS IMAGE_NUMBEROF_DIRECTORY_ENTRIES EQU 10h IMAGEOPTIONALHEADER STRUC PIMAGEOPTIONALHEADER TYPEDEF FAR PTR IMAGEOPTIONALHEADER OPTIONALHEADER@@Magic DW ? ; always 010Bh OPTIONALHEADER@@MajorLinkerVersion DB ? ; major linker version of linker that produced file OPTIONALHEADER@@MinorLinkerVersion DB ? ; minor linker version of linker that produced file OPTIONALHEADER@@SizeOfCode DD ? ; combined size of all code sections OPTIONALHEADER@@SizeOfInitializedData DD ? ; combined size of all initialized data sections OPTIONALHEADER@@SizeOfUnitializedData DD ? ; combined size of all unitialized data sections OPTIONALHEADER@@AddressOfEntryPoint DD ? ; RVA where code begins execution OPTIONALHEADER@@BaseOfCode DD ? ; RVA where files code sections begin OPTIONALHEADER@@BaseOfData DD ? ; RVA where files data sections begin OPTIONALHEADER@@ImageBase DD ? ; preferred address to load this image OPTIONALHEADER@@SectionAlignment DD ? ; alignment of sections in memory OPTIONALHEADER@@FileAlignment DD ? ; alignment of sections in the file OPTIONALHEADER@@MajorOperatingSystemVersion DW ? ; minimum version of operating system required OPTIONALHEADER@@MinorOperatingSystemVersion DW ? ; minor version number of above OPTIONALHEADER@@MajorImageVersion DW ? ; user defineable field OPTIONALHEADER@@MinorImageVersion DW ? ; user defineable field OPTIONALHEADER@@MajorSubsystemVersion DW ? ; minimum subsystem version to run exe OPTIONALHEADER@@MinorSubsystemVersion DW ? ; minimum subsystem version OPTIONALHEADER@@Win32VersionValue DD ? ; always zero OPTIONALHEADER@@SizeOfImage DD ? ; total size of the image, rounded up OPTIONALHEADER@@SizeOfHeaders DD ? ; size of PE header and section table OPTIONALHEADER@@CheckSum DD ? ; 0, except for trusted services OPTIONALHEADER@@Subsystem DW ? ; 1=native,2=wingui,3=console,5=OS/2,7=Posix OPTIONALHEADER@@DllCharacteristics DW ? ; 1=callonload,2=callendthrd,4=callinithtrd,6=calldllexit OPTIONALHEADER@@SizeOfStackReserve DD ? ; amount of memory to reserve for stack OPTIONALHEADER@@SizeOfStackCommit DD ? ; amount of committed memory for stack OPTIONALHEADER@@SizeOfHeapReserve DD ? ; amount of memory to reserve for heap OPTIONALHEADER@@SizeOfHeapCommit DD ? ; amount of committed memory for heap OPTIONALHEADER@@LoaderFlags DD ? ; unknown purpose OPTIONALHEADER@@NumberOfRvaAndSizes DD ? ; number of entries in the data directory OPTIONALHEADER@@DataDirectory IMAGEDATADIRECTORY IMAGE_NUMBEROF_DIRECTORY_ENTRIES DUP() IMAGEOPTIONALHEADER ENDS IMAGE_SIZEOF_FILE_HEADER EQU 0014h IMAGE_FILE_RELOCS_STRIPPED EQU 0001h ; Relocation info stripped from file. IMAGE_FILE_EXECUTABLE_IMAGE EQU 0002h ; File is executable (i.e. no unresolved externel references). IMAGE_FILE_LINE_NUMS_STRIPPED EQU 0004h ; Line nunbers stripped from file. IMAGE_FILE_LOCAL_SYMS_STRIPPED EQU 0008h ; Local symbols stripped from file. IMAGE_FILE_AGGRESIVE_WS_TRIM EQU 0010h ; Agressively trim working set IMAGE_FILE_BYTES_REVERSED_LO EQU 0080h ; Bytes of machine word are reversed. IMAGE_FILE_32BIT_MACHINE EQU 0100h ; 32 bit word machine. IMAGE_FILE_DEBUG_STRIPPED EQU 0200h ; Debugging info stripped from file in .DBG file IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP EQU 0400h ; If Image is on removable media, copy and run from the swap file. IMAGE_FILE_NET_RUN_FROM_SWAP EQU 0800h ; If Image is on Net, copy and run from the swap file. IMAGE_FILE_SYSTEM EQU 1000h ; System File. IMAGE_FILE_DLL EQU 2000h ; File is a DLL. IMAGE_FILE_UP_SYSTEM_ONLY EQU 4000h ; File should only be run on a UP machine IMAGE_FILE_BYTES_REVERSED_HI EQU 8000h ; Bytes of machine word are reversed. IMAGE_FILE_MACHINE_UNKNOWN EQU 0000h IMAGE_FILE_MACHINE_I386 EQU 014ch ; Intel 386. IMAGE_FILE_MACHINE_R3000 EQU 0162h ; MIPS little-endian, 0x160 big-endian IMAGE_FILE_MACHINE_R4000 EQU 0166h ; MIPS little-endian IMAGE_FILE_MACHINE_R10000 EQU 0168h ; MIPS little-endian IMAGE_FILE_MACHINE_ALPHA EQU 0184h ; Alpha_AXP IMAGE_FILE_MACHINE_POWERPC EQU 01F0h ; IBM PowerPC Little-Endian ; subsystem IMAGE_SUBSYSTEM_UNKNOWN EQU 0000h ; Unknown subsystem. IMAGE_SUBSYSTEM_NATIVE EQU 0001h ; Image doesn't require a subsystem. IMAGE_SUBSYSTEM_WINDOWS_GUI EQU 0002h ; Image runs in the Windows GUI subsystem. IMAGE_SUBSYSTEM_WINDOWS_CUI EQU 0003h ; Image runs in the Windows character subsystem. IMAGE_SUBSYSTEM_OS2_CUI EQU 0005h ; image runs in the OS/2 character subsystem. IMAGE_SUBSYSTEM_POSIX_CUI EQU 0007h ; image runs in the Posix character subsystem. IMAGE_SUBSYSTEM_RESERVED8 EQU 0008h ; image runs in the 8 subsystem. ; directory entries IMAGE_DIRECTORY_ENTRY_EXPORT EQU 0000h ; Export Directory IMAGE_DIRECTORY_ENTRY_IMPORT EQU 0001h ; Import Directory IMAGE_DIRECTORY_ENTRY_RESOURCE EQU 0002h ; Resource Directory IMAGE_DIRECTORY_ENTRY_EXCEPTION EQU 0003h ; Exception Directory IMAGE_DIRECTORY_ENTRY_SECURITY EQU 0004h ; Security Directory IMAGE_DIRECTORY_ENTRY_BASERELOC EQU 0005h ; Base Relocation Table IMAGE_DIRECTORY_ENTRY_DEBUG EQU 0006h ; Debug Directory IMAGE_DIRECTORY_ENTRY_COPYRIGHT EQU 0007h ; Description String IMAGE_DIRECTORY_ENTRY_GLOBALPTR EQU 0008h ; Machine Value (MIPS GP) IMAGE_DIRECTORY_ENTRY_TLS EQU 0009h ; TLS Directory IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG EQU 000Ah ; Load Configuration Directory IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT EQU 000Bh ; Bound Import Directory in headers IMAGE_DIRECTORY_ENTRY_IAT EQU 000Ch ; Import Address Table IMAGE_NUMBEROF_DIRECTORY_ENTRIES EQU 0010h IMAGE_DOS_SIGNATURE EQU 5A4Dh ; MZ header signature IMAGE_PE_SIGNATURE EQU 4550h ; PE signature ; image section header equates IMAGE_SIZEOF_SHORT_NAME EQU 0008h IMAGE_SIZEOF_SECTION_HEADER EQU 0040h IMAGESECTIONHEADER STRUC PIMAGESECTIONHEADER TYPEDEF NEAR PTR IMAGESECTIONHEADER SECTIONHEADER@@Name DB IMAGE_SIZEOF_SHORT_NAME DUP(?) SECTIONHEADER@@VirtualSize DD ? ; VirtualSize=PhysicalAddress SECTIONHEADER@@VirtualAddress DD ? SECTIONHEADER@@SizeOfRawData DD ? SECTIONHEADER@@PointerToRawData DD ? SECTIONHEADER@@PointerToRelocations DD ? SECTIONHEADER@@PointerToLineNumbers DD ? SECTIONHEADER@@NumberOfRelocations DW ? SECTIONHEADER@@NumberOfLineNumbers DW ? SECTIONHEADER@@Characteristics DD ? IMAGESECTIONHEADER ENDS IMAGE_SCN_TYPE_NO_PAD EQU 00000008h ; Reserved. IMAGE_SCN_CNT_CODE EQU 00000020h ; Section contains code. IMAGE_SCN_CNT_INITIALIZED_DATA EQU 00000040h ; Section contains initialized data. IMAGE_SCN_CNT_UNINITIALIZED_DATA EQU 00000080h ; Section contains uninitialized data. IMAGE_SCN_LNK_OTHER EQU 00000100h ; Reserved. IMAGE_SCN_LNK_INFO EQU 00000200h ; Section contains comments or some other type of information. IMAGE_SCN_LNK_REMOVE EQU 00000800h ; Section contents will not become part of image. IMAGE_SCN_LNK_COMDAT EQU 00001000h ; Section contents comdat. IMAGE_SCN_MEM_FARDATA EQU 00008000h IMAGE_SCN_MEM_PURGEABLE EQU 00020000h IMAGE_SCN_MEM_16BIT EQU 00020000h IMAGE_SCN_MEM_LOCKED EQU 00040000h IMAGE_SCN_MEM_PRELOAD EQU 00080000h IMAGE_SCN_ALIGN_1BYTES EQU 00100000h ; IMAGE_SCN_ALIGN_2BYTES EQU 00200000h ; IMAGE_SCN_ALIGN_4BYTES EQU 00300000h ; IMAGE_SCN_ALIGN_8BYTES EQU 00400000h ; IMAGE_SCN_ALIGN_16BYTES EQU 00500000h ; Default alignment if no others are specified. IMAGE_SCN_ALIGN_32BYTES EQU 00600000h ; IMAGE_SCN_ALIGN_64BYTES EQU 00700000h ; IMAGE_SCN_LNK_NRELOC_OVFL EQU 01000000h ; Section contains extended relocations. IMAGE_SCN_MEM_DISCARDABLE EQU 02000000h ; Section can be discarded. IMAGE_SCN_MEM_NOT_CACHED EQU 04000000h ; Section is not cachable. IMAGE_SCN_MEM_NOT_PAGED EQU 08000000h ; Section is not pageable. IMAGE_SCN_MEM_SHARED EQU 10000000h ; Section is shareable. IMAGE_SCN_MEM_EXECUTE EQU 20000000h ; Section is executable. IMAGE_SCN_MEM_READ EQU 40000000h ; Section is readable. IMAGE_SCN_MEM_WRITE EQU 80000000h ; Section is writeable. IMAGE_SCN_SCALE_INDEX EQU 00000001h ; Tls index is scaled IMAGE_SCN_MEM_FARDATA EQU 00008000h IMAGE_SCN_MEM_PURGEABLE EQU 00020000h IMAGE_SCN_MEM_16BIT EQU 00020000h IMAGE_SCN_MEM_LOCKED EQU 00040000h IMAGE_SCN_MEM_PRELOAD EQU 00080000h IMAGE_SCN_ALIGN_1BYTES EQU 00100000h IMAGE_SCN_ALIGN_2BYTES EQU 00200000h IMAGE_SCN_ALIGN_4BYTES EQU 00300000h IMAGE_SCN_ALIGN_8BYTES EQU 00400000h IMAGE_SCN_ALIGN_16BYTES EQU 00500000h ; Default alignment if no others are specified. IMAGE_SCN_ALIGN_32BYTES EQU 00600000h IMAGE_SCN_ALIGN_64BYTES EQU 00700000h IMAGE_SCN_LNK_NRELOC_OVFL EQU 01000000h ; Section contains extended relocations. IMAGE_SCN_MEM_DISCARDABLE EQU 02000000h ; Section can be discarded. IMAGE_SCN_MEM_NOT_CACHED EQU 04000000h ; Section is not cachable. IMAGE_SCN_MEM_NOT_PAGED EQU 08000000h ; Section is not pageable. IMAGE_SCN_MEM_SHARED EQU 10000000h ; Section is shareable. IMAGE_SCN_MEM_EXECUTE EQU 20000000h ; Section is executable. IMAGE_SCN_MEM_READ EQU 40000000h ; Section is readable. IMAGE_SCN_MEM_WRITE EQU 80000000h ; Section is writeable. IMAGE_SCN_SCALE_INDEX EQU 00000001h ; Tls index is scaled IMAGE_SCN_TYPE_NO_PAD EQU 00000008h ; Reserved. IMAGE_SCN_CNT_CODE EQU 00000020h ; Section contains code. IMAGE_SCN_CNT_INITIALIZED_DATA EQU 00000040h ; Section contains initialized data. IMAGE_SCN_CNT_UNINITIALIZED_DATA EQU 00000080h ; Section contains uninitialized data. IMAGE_SCN_LNK_OTHER EQU 00000100h ; Reserved. IMAGE_SCN_LNK_INFO EQU 00000200h ; Section contains comments or some other type of information. IMAGE_SCN_LNK_REMOVE EQU 00000800h ; Section contents will not become part of image. IMAGE_SCN_LNK_COMDAT EQU 00001000h ; Section contents comdat. IMAGE_SCN_MEM_FARDATA EQU 00008000h IMAGE_SCN_MEM_PURGEABLE EQU 00020000h IMAGE_SCN_MEM_16BIT EQU 00020000h IMAGE_SCN_MEM_LOCKED EQU 00040000h IMAGE_SCN_MEM_PRELOAD EQU 00080000h IMAGE_SCN_ALIGN_1BYTES EQU 00100000h ; IMAGE_SCN_ALIGN_2BYTES EQU 00200000h ; IMAGE_SCN_ALIGN_4BYTES EQU 00300000h ; IMAGE_SCN_ALIGN_8BYTES EQU 00400000h ; IMAGE_SCN_ALIGN_16BYTES EQU 00500000h ; Default alignment if no others are specified. IMAGE_SCN_ALIGN_32BYTES EQU 00600000h ; IMAGE_SCN_ALIGN_64BYTES EQU 00700000h ; IMAGE_SCN_LNK_NRELOC_OVFL EQU 01000000h ; Section contains extended relocations. IMAGE_SCN_MEM_DISCARDABLE EQU 02000000h ; Section can be discarded. IMAGE_SCN_MEM_NOT_CACHED EQU 04000000h ; Section is not cachable. IMAGE_SCN_MEM_NOT_PAGED EQU 08000000h ; Section is not pageable. IMAGE_SCN_MEM_SHARED EQU 10000000h ; Section is shareable. IMAGE_SCN_MEM_EXECUTE EQU 20000000h ; Section is executable. IMAGE_SCN_MEM_READ EQU 40000000h ; Section is readable. IMAGE_SCN_MEM_WRITE EQU 80000000h ; Section is writeable.