From 7971e8425b1bef77eb67487c625b3d1ea2591003 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sun, 19 Jun 2005 00:06:08 +0000 Subject: [PATCH] - Use regular PE structures in NTOSKRNL/NTDLL/DISKDUMP. - Add WDMGUID library. - Get rid of few more headers. svn path=/trunk/; revision=16067 --- reactos/apps/utils/net/arp/arp.c | 4 +- reactos/drivers/storage/diskdump/diskdump.c | 16 +- reactos/include/ddk/ddrawint.h | 1 - reactos/include/ddk/i386/irql.h | 7 - reactos/include/ddk/i386/pagesize.h | 7 - reactos/include/internal/port.h | 151 --- reactos/include/ntos/rtl.h | 4 +- reactos/include/ole32/guiddef.h | 208 ---- reactos/include/pe.h | 1162 ------------------- reactos/include/snmp.h | 290 ----- reactos/lib/directory.xml | 3 + reactos/lib/kernel32/process/create.c | 2 +- reactos/lib/ntdll/ldr/startup.c | 4 +- reactos/lib/ntdll/ldr/utils.c | 58 +- reactos/lib/smlib/connect.c | 1 - reactos/lib/wdmguid/wdmguid.xml | 4 + reactos/ntoskrnl/cc/view.c | 3 - reactos/ntoskrnl/ldr/loader.c | 5 + reactos/ntoskrnl/ntoskrnl.xml | 1 + reactos/services/umpnpmgr/umpnpmgr.xml | 1 + reactos/subsys/system/usetup/usetup.h | 3 - reactos/w32api/include/winnt.h | 12 +- 22 files changed, 69 insertions(+), 1878 deletions(-) delete mode 100644 reactos/include/ddk/i386/irql.h delete mode 100644 reactos/include/ddk/i386/pagesize.h delete mode 100644 reactos/include/internal/port.h delete mode 100644 reactos/include/ole32/guiddef.h delete mode 100644 reactos/include/pe.h delete mode 100644 reactos/include/snmp.h create mode 100644 reactos/lib/wdmguid/wdmguid.xml diff --git a/reactos/apps/utils/net/arp/arp.c b/reactos/apps/utils/net/arp/arp.c index 19bbf0f31b3..897be7bb2e6 100644 --- a/reactos/apps/utils/net/arp/arp.c +++ b/reactos/apps/utils/net/arp/arp.c @@ -18,8 +18,8 @@ #include "trace.h" -VOID SNMP_FUNC_TYPE SnmpSvcInitUptime(); -DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime(); +VOID WINSNMPAPI SnmpSvcInitUptime(); +DWORD WINSNMPAPI SnmpSvcGetUptime(); //////////////////////////////////////////////////////////////////////////////// diff --git a/reactos/drivers/storage/diskdump/diskdump.c b/reactos/drivers/storage/diskdump/diskdump.c index 2ca4d6c4d87..dcce7b36a9e 100644 --- a/reactos/drivers/storage/diskdump/diskdump.c +++ b/reactos/drivers/storage/diskdump/diskdump.c @@ -297,7 +297,7 @@ DiskDumpPrepare(PDEVICE_OBJECT DeviceObject, PDUMP_POINTERS DumpPointers) PIMAGE_NT_HEADERS NtHeader; PVOID ImportDirectory; ULONG ImportDirectorySize; - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory; PVOID DriverBase; PCH Name; ULONG i; @@ -325,12 +325,12 @@ DiskDumpPrepare(PDEVICE_OBJECT DeviceObject, PDUMP_POINTERS DumpPointers) return(STATUS_UNSUCCESSFUL); } /* Process each import module */ - ImportModuleDirectory = (PIMAGE_IMPORT_MODULE_DIRECTORY)ImportDirectory; + ImportModuleDirectory = (PIMAGE_IMPORT_DESCRIPTOR)ImportDirectory; DPRINT("Processeing import directory at %p\n", ImportModuleDirectory); - while (ImportModuleDirectory->dwRVAModuleName) + while (ImportModuleDirectory->Name) { /* Check to make sure that import lib is kernel */ - Name = (PCHAR) DriverBase + ImportModuleDirectory->dwRVAModuleName; + Name = (PCHAR) DriverBase + ImportModuleDirectory->Name; if (strcmp(Name, "scsiport.sys") != 0) { @@ -341,18 +341,18 @@ DiskDumpPrepare(PDEVICE_OBJECT DeviceObject, PDUMP_POINTERS DumpPointers) /* Get the import address list */ ImportAddressList = (PVOID *) ((PUCHAR)DriverBase + - ImportModuleDirectory->dwRVAFunctionAddressList); + (ULONG_PTR)ImportModuleDirectory->FirstThunk); /* Get the list of functions to import */ - if (ImportModuleDirectory->dwRVAFunctionNameList != 0) + if (ImportModuleDirectory->OriginalFirstThunk != 0) { FunctionNameList = (PULONG) ((PUCHAR)DriverBase + - ImportModuleDirectory->dwRVAFunctionNameList); + (ULONG_PTR)ImportModuleDirectory->OriginalFirstThunk); } else { FunctionNameList = (PULONG) ((PUCHAR)DriverBase + - ImportModuleDirectory->dwRVAFunctionAddressList); + (ULONG_PTR)ImportModuleDirectory->FirstThunk); } /* Walk through function list and fixup addresses */ while (*FunctionNameList != 0L) diff --git a/reactos/include/ddk/ddrawint.h b/reactos/include/ddk/ddrawint.h index 568daaa04b5..246765708cd 100644 --- a/reactos/include/ddk/ddrawint.h +++ b/reactos/include/ddk/ddrawint.h @@ -6,7 +6,6 @@ #define __DD_INCLUDED__ #include -#include #ifdef __cplusplus extern "C" { diff --git a/reactos/include/ddk/i386/irql.h b/reactos/include/ddk/i386/irql.h deleted file mode 100644 index db7ef233785..00000000000 --- a/reactos/include/ddk/i386/irql.h +++ /dev/null @@ -1,7 +0,0 @@ -/* - * PURPOSE: The number of device specific level levels - */ -#define NR_DEVICE_SPECIFIC_LEVELS (16) - - - diff --git a/reactos/include/ddk/i386/pagesize.h b/reactos/include/ddk/i386/pagesize.h deleted file mode 100644 index 5b0c14e2bf3..00000000000 --- a/reactos/include/ddk/i386/pagesize.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __INCLUDE_DDK_I386_PAGESIZE_H -#define __INCLUDE_DDK_I386_PAGESIZE_H - -#define PAGE_SIZE (4096) -#define PAGE_SHIFT 12L - -#endif /* __INCLUDE_DDK_I386_PAGESIZE_H */ diff --git a/reactos/include/internal/port.h b/reactos/include/internal/port.h deleted file mode 100644 index 18c8618b6fe..00000000000 --- a/reactos/include/internal/port.h +++ /dev/null @@ -1,151 +0,0 @@ -#ifndef __INCLUDE_INTERNAL_PORT_H -#define __INCLUDE_INTERNAL_PORT_H - -#include - -typedef -struct _EPORT -{ - KSPIN_LOCK Lock; - KEVENT Event; - - ULONG State; - - struct _EPORT * OtherPort; - - ULONG QueueLength; - LIST_ENTRY QueueListHead; - - ULONG ConnectQueueLength; - LIST_ENTRY ConnectQueueListHead; - - ULONG MaxDataLength; - ULONG MaxConnectInfoLength; - -} EPORT, * PEPORT; - - -typedef struct _EPORT_TERMINATION_REQUEST -{ - LIST_ENTRY ThreadListEntry; - PEPORT Port; - -} EPORT_TERMINATION_REQUEST, *PEPORT_TERMINATION_REQUEST; - - -NTSTATUS -STDCALL -LpcRequestPort ( - PEPORT Port, - PLPC_MESSAGE LpcMessage - ); -NTSTATUS -STDCALL -LpcSendTerminationPort ( - PEPORT Port, - TIME CreationTime - ); - - -/* Port Object Access */ - -#define PORT_ALL_ACCESS (0x1) - - -/* EPORT.State */ - -#define EPORT_INACTIVE (0) -#define EPORT_WAIT_FOR_CONNECT (1) -#define EPORT_WAIT_FOR_ACCEPT (2) -#define EPORT_WAIT_FOR_COMPLETE_SRV (3) -#define EPORT_WAIT_FOR_COMPLETE_CLT (4) -#define EPORT_CONNECTED_CLIENT (5) -#define EPORT_CONNECTED_SERVER (6) -#define EPORT_DISCONNECTED (7) - -typedef -struct _QUEUEDMESSAGE -{ - PEPORT Sender; - LIST_ENTRY QueueListEntry; - LPC_MESSAGE Message; - UCHAR MessageData [MAX_MESSAGE_DATA]; - -} QUEUEDMESSAGE, *PQUEUEDMESSAGE; - -/* Code in ntoskrnl/lpc/close.c */ - -VOID -NiClosePort ( - PVOID ObjectBody, - ULONG HandleCount - ); -VOID -NiDeletePort ( - IN PVOID ObjectBody - ); - - -/* Code in ntoskrnl/lpc/queue.c */ - -VOID -STDCALL -EiEnqueueConnectMessagePort ( - IN OUT PEPORT Port, - IN PQUEUEDMESSAGE Message - ); -VOID -STDCALL -EiEnqueueMessagePort ( - IN OUT PEPORT Port, - IN PQUEUEDMESSAGE Message - ); -PQUEUEDMESSAGE -STDCALL -EiDequeueConnectMessagePort ( - IN OUT PEPORT Port - ); -PQUEUEDMESSAGE -STDCALL -EiDequeueMessagePort ( - IN OUT PEPORT Port - ); - -/* Code in ntoskrnl/lpc/create.c */ - -NTSTATUS -NiCreatePort ( - PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - POBJECT_ATTRIBUTES ObjectAttributes - ); - -/* Code in ntoskrnl/lpc/port.c */ - -NTSTATUS -STDCALL -NiInitializePort ( - IN OUT PEPORT Port - ); -NTSTATUS -NiInitPort ( - VOID - ); - -extern POBJECT_TYPE ExPortType; -extern ULONG EiNextLpcMessageId; - -/* Code in ntoskrnl/lpc/reply.c */ - -NTSTATUS -STDCALL -EiReplyOrRequestPort ( - IN PEPORT Port, - IN PLPC_MESSAGE LpcReply, - IN ULONG MessageType, - IN PEPORT Sender - ); - - -#endif /* __INCLUDE_INTERNAL_PORT_H */ diff --git a/reactos/include/ntos/rtl.h b/reactos/include/ntos/rtl.h index 4f384403f71..9aecbfd5745 100755 --- a/reactos/include/ntos/rtl.h +++ b/reactos/include/ntos/rtl.h @@ -11,8 +11,8 @@ #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */ -#include -#include +#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) +#define ROUND_DOWN(N, S) ((N) - ((N) % (S))) #ifndef __USE_W32API diff --git a/reactos/include/ole32/guiddef.h b/reactos/include/ole32/guiddef.h deleted file mode 100644 index 02c3b588491..00000000000 --- a/reactos/include/ole32/guiddef.h +++ /dev/null @@ -1,208 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS system libraries - * FILE: include\ole32\guiddef.h - * PURPOSE: Guid definition macros - * PROGRAMMER: jurgen van gael [jurgen.vangael@student.kuleuven.ac.be] - * UPDATE HISTORY: - * Created 05/01/2001 - */ -/******************************************************************** - - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. - - -********************************************************************/ -#ifndef _GUIDDEF_H -#define _GUIDDEF_H - -#include - -#ifdef __USE_W32API -#include -#endif /* __USE_W32API */ - -#ifndef EXTERN_C - #ifdef __cplusplus - #define EXTERN_C extern "C" - #else - #define EXTERN_C extern - #endif -#endif - -#ifndef __USE_W32API - -/* guid definition */ -#ifndef GUID_DEFINED - #define GUID_DEFINED - typedef struct _GUID { - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[ 8 ]; - } GUID; - typedef GUID* LPGUID; - typedef const GUID* LPCGUID; -#endif - -#endif /* __USE_W32API */ - - -/* guid definition macro */ -#ifdef DEFINE_GUID - #undef DEFINE_GUID -#endif - -#ifdef INITGUID - #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - const GUID name = {l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}} -#else - #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ - const GUID name -#endif - -#ifndef DEFINE_OLEGUID -#define DEFINE_OLEGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) -#endif - - - -/* IID section */ -#ifndef __USE_W32API -typedef GUID IID; -typedef IID* LPIID; -#endif /* __USE_W32API */ -#ifndef IsEqualIID -#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) -#endif - - -/* CLSID section */ -#ifndef __USE_W32API -typedef GUID CLSID; -typedef CLSID* LPCLSID; -#endif /* __USE_W32API */ -#ifndef IsEqualCLSID -#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) -#endif - -/* FMTID */ -#ifndef __USE_W32API -typedef GUID FMTID; -typedef FMTID* LPFMTID; -#endif /* __USE_W32API */ -#define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2) - - -/* REFGUID section */ -#ifndef _REFGUID_DEFINED - #define _REFGUID_DEFINED - #ifdef __cplusplus - #define REFGUID const GUID & - #else - #define REFGUID const GUID * - #endif -#endif - -/* REFIID section */ -#if !defined(_REFIID_DEFINED) && !defined(_REFGIID_DEFINED) - #define _REFIID_DEFINED - #define _REFGIID_DEFINED - #ifdef __cplusplus - #define REFIID const IID & - #else - #define REFIID const IID * - #endif -#endif - -/* REFCLSID section */ -#ifndef _REFCLSID_DEFINED - #define _REFCLSID_DEFINED - #ifdef __cplusplus - #define REFCLSID const IID & - #else - #define REFCLSID const IID * - #endif -#endif - -/* REFFMTID section */ -#ifndef _REFFMTID_DEFINED - #define _REFFMTID_DEFINED - #ifdef __cplusplus - #define REFFMTID const IID & - #else - #define REFFMTID const IID * - #endif -#endif - - -/* compare functions for GUID */ -#ifdef __cplusplus - /* cpp versions */ - __inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2) - { - return(((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] && - ((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] && - ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] && - ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]); - } - __inline int IsEqualGUID(REFGUID rguid1, REFGUID rguid2) - { - return !memcmp(&rguid1, &rguid2, sizeof(GUID)); - } -#else - /* c versions */ - #define InlineIsEqualGUID(rguid1, rguid2) \ - (((unsigned long *) rguid1)[0] == ((unsigned long *) rguid2)[0] && \ - ((unsigned long *) rguid1)[1] == ((unsigned long *) rguid2)[1] && \ - ((unsigned long *) rguid1)[2] == ((unsigned long *) rguid2)[2] && \ - ((unsigned long *) rguid1)[3] == ((unsigned long *) rguid2)[3]) - - #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID))) -#endif - -/* use the inline version??? */ -#ifdef __INLINE_ISEQUAL_GUID - #define IsEqualGUID(rguid1, rguid2) InlineIsEqualGUID(rguid1, rguid2) -#endif - - -/* compare functions for IID CLSID */ -#ifndef IsEqualIID -#define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2) -#endif -#ifndef IsEqualCLSID -#define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2) -#endif - -/* c++ helper functions */ -#if !defined _SYS_GUID_OPERATOR_EQ_ && !defined _NO_SYS_GUID_OPERATOR_EQ_ - #define _SYS_GUID_OPERATOR_EQ_ - #ifdef __cplusplus - __inline int operator==(REFGUID guidOne, REFGUID guidTwo) - { - return IsEqualGUID(guidOne ,guidTwo); - } - - __inline int operator!=(REFGUID guidOne, REFGUID guidTwo) - { - return !(guidOne == guidTwo); - } - #endif -#endif - -#endif diff --git a/reactos/include/pe.h b/reactos/include/pe.h deleted file mode 100644 index c083557848e..00000000000 --- a/reactos/include/pe.h +++ /dev/null @@ -1,1162 +0,0 @@ -#ifndef __INCLUDE_PE_H -#define __INCLUDE_PE_H - -//#define _ANONYMOUS_UNION __extension__ -//#define _ANONYMOUS_STRUCT __extension__ - -#ifdef __GNUC__ -#ifndef NONAMELESSUNION -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) -#define _ANONYMOUS_UNION __extension__ -#define _ANONYMOUS_STRUCT __extension__ -#else -#if defined(__cplusplus) -#define _ANONYMOUS_UNION __extension__ -#endif -#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */ -#endif /* NONAMELESSUNION */ -#else -#define _ANONYMOUS_UNION -#define _ANONYMOUS_STRUCT -#endif /* __GNUC__ */ - - -#ifndef NTAPI -#define NTAPI STDCALL -#endif - -#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 -#define IMAGE_SIZEOF_SHORT_NAME 8 -#define IMAGE_SIZEOF_SYMBOL 18 - -#ifndef __USE_W32API - -#define IMAGE_DOS_SIGNATURE 0x5a4d -#define IMAGE_OS2_SIGNATURE 0x454e -#define IMAGE_OS2_SIGNATURE_LE 0x454c -#define IMAGE_VXD_SIGNATURE 0x454c - -#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file. -#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references). -#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file. -#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file. -#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020 // Application supports addresses >2GB -#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed. -#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine. -#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file -#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400 // If Image is on removable media, copy and run from the swap file. -#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800 // If Image is on Net, copy and run from the swap file. -#define IMAGE_FILE_SYSTEM 0x1000 // System File. -#define IMAGE_FILE_DLL 0x2000 // File is a DLL. -#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine -#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. - -#define IMAGE_FILE_MACHINE_UNKNOWN 0 -#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386. -#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0x160 big-endian -#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian -#define IMAGE_FILE_MACHINE_R10000 0x168 // MIPS little-endian -#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP -#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian -#define IMAGE_FILE_MACHINE_ARM 0x01c0 // ARM little-endian -#define IMAGE_FILE_MACHINE_IA64 0x0200 // Intel IA64 -#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 -#define IMAGE_FILE_MACHINE_ALPHA64 0x0284 // Alpha AXP, full 64-bit support -#define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD x86-64 -#define IMAGE_FILE_MACHINE_M32R 0x9041 // M32R little-endian - -#pragma pack(push,4) -typedef struct _IMAGE_FILE_HEADER { - WORD Machine; - WORD NumberOfSections; - DWORD TimeDateStamp; - DWORD PointerToSymbolTable; - DWORD NumberOfSymbols; - WORD SizeOfOptionalHeader; - WORD Characteristics; -} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; -typedef struct _IMAGE_DATA_DIRECTORY { - DWORD VirtualAddress; - DWORD Size; -} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY; -typedef struct _IMAGE_OPTIONAL_HEADER { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Reserved1; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - DWORD SizeOfStackReserve; - DWORD SizeOfStackCommit; - DWORD SizeOfHeapReserve; - DWORD SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; -} IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32; -typedef struct _IMAGE_OPTIONAL_HEADER64 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - ULONGLONG ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Reserved1; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - ULONGLONG SizeOfStackReserve; - ULONGLONG SizeOfStackCommit; - ULONGLONG SizeOfHeapReserve; - ULONGLONG SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; -} IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64; -#ifdef _WIN64 -typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; -typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; -#else -typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; -typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; -#endif -typedef struct _IMAGE_ROM_OPTIONAL_HEADER { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD BaseOfBss; - DWORD GprMask; - DWORD CprMask[4]; - DWORD GpValue; -} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER; -#pragma pack(pop) -#pragma pack(push,2) -typedef struct _IMAGE_DOS_HEADER { - WORD e_magic; - WORD e_cblp; - WORD e_cp; - WORD e_crlc; - WORD e_cparhdr; - WORD e_minalloc; - WORD e_maxalloc; - WORD e_ss; - WORD e_sp; - WORD e_csum; - WORD e_ip; - WORD e_cs; - WORD e_lfarlc; - WORD e_ovno; - WORD e_res[4]; - WORD e_oemid; - WORD e_oeminfo; - WORD e_res2[10]; - LONG e_lfanew; -} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER; -typedef struct _IMAGE_OS2_HEADER { - WORD ne_magic; - CHAR ne_ver; - CHAR ne_rev; - WORD ne_enttab; - WORD ne_cbenttab; - LONG ne_crc; - WORD ne_flags; - WORD ne_autodata; - WORD ne_heap; - WORD ne_stack; - LONG ne_csip; - LONG ne_sssp; - WORD ne_cseg; - WORD ne_cmod; - WORD ne_cbnrestab; - WORD ne_segtab; - WORD ne_rsrctab; - WORD ne_restab; - WORD ne_modtab; - WORD ne_imptab; - LONG ne_nrestab; - WORD ne_cmovent; - WORD ne_align; - WORD ne_cres; - BYTE ne_exetyp; - BYTE ne_flagsothers; - WORD ne_pretthunks; - WORD ne_psegrefbytes; - WORD ne_swaparea; - WORD ne_expver; -} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER; -#pragma pack(pop) -#pragma pack(push,4) -typedef struct _IMAGE_NT_HEADERS { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER32 OptionalHeader; -} IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32; -typedef struct _IMAGE_NT_HEADERS64 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER64 OptionalHeader; -} IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64; -#ifdef _WIN64 -typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; -typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; -#else -typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; -typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; -#endif -typedef struct _IMAGE_ROM_HEADERS { - IMAGE_FILE_HEADER FileHeader; - IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; -} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS; -typedef struct _IMAGE_SECTION_HEADER { - BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; - union { - DWORD PhysicalAddress; - DWORD VirtualSize; - } Misc; - DWORD VirtualAddress; - DWORD SizeOfRawData; - DWORD PointerToRawData; - DWORD PointerToRelocations; - DWORD PointerToLinenumbers; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD Characteristics; -} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; -#pragma pack(pop) -#pragma pack(push,2) -typedef struct _IMAGE_SYMBOL { - union { - BYTE ShortName[8]; - struct { - DWORD Short; - DWORD Long; - } Name; - PBYTE LongName[2]; - } N; - DWORD Value; - SHORT SectionNumber; - WORD Type; - BYTE StorageClass; - BYTE NumberOfAuxSymbols; -} IMAGE_SYMBOL,*PIMAGE_SYMBOL; -typedef union _IMAGE_AUX_SYMBOL { - struct { - DWORD TagIndex; - union { - struct { - WORD Linenumber; - WORD Size; - } LnSz; - DWORD TotalSize; - } Misc; - union { - struct { - DWORD PointerToLinenumber; - DWORD PointerToNextFunction; - } Function; - struct { - WORD Dimension[4]; - } Array; - } FcnAry; - WORD TvIndex; - } Sym; - struct { - BYTE Name[IMAGE_SIZEOF_SYMBOL]; - } File; - struct { - DWORD Length; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD CheckSum; - SHORT Number; - BYTE Selection; - } Section; -} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL; -typedef struct _IMAGE_COFF_SYMBOLS_HEADER { - DWORD NumberOfSymbols; - DWORD LvaToFirstSymbol; - DWORD NumberOfLinenumbers; - DWORD LvaToFirstLinenumber; - DWORD RvaToFirstByteOfCode; - DWORD RvaToLastByteOfCode; - DWORD RvaToFirstByteOfData; - DWORD RvaToLastByteOfData; -} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER; -typedef struct _IMAGE_RELOCATION { - _ANONYMOUS_UNION union { - DWORD VirtualAddress; - DWORD RelocCount; - } DUMMYUNIONNAME; - DWORD SymbolTableIndex; - WORD Type; -} IMAGE_RELOCATION,*PIMAGE_RELOCATION; -#pragma pack(pop) -#pragma pack(push,4) -typedef struct _IMAGE_BASE_RELOCATION { - DWORD VirtualAddress; - DWORD SizeOfBlock; -} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION; -#pragma pack(pop) -#pragma pack(push,2) -typedef struct _IMAGE_LINENUMBER { - union { - DWORD SymbolTableIndex; - DWORD VirtualAddress; - } Type; - WORD Linenumber; -} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER; -#pragma pack(pop) -#pragma pack(push,4) -typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { - BYTE Name[16]; - BYTE Date[12]; - BYTE UserID[6]; - BYTE GroupID[6]; - BYTE Mode[8]; - BYTE Size[10]; - BYTE EndHeader[2]; -} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER; -typedef struct _IMAGE_EXPORT_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Name; - DWORD Base; - DWORD NumberOfFunctions; - DWORD NumberOfNames; - PDWORD *AddressOfFunctions; - PDWORD *AddressOfNames; - PWORD *AddressOfNameOrdinals; -} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY; -typedef struct _IMAGE_IMPORT_BY_NAME { - WORD Hint; - BYTE Name[1]; -} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME; -typedef struct _IMAGE_THUNK_DATA { - union { - PBYTE ForwarderString; - PDWORD Function; - DWORD Ordinal; - PIMAGE_IMPORT_BY_NAME AddressOfData; - } u1; -} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA; -typedef struct _IMAGE_IMPORT_DESCRIPTOR { - union { - DWORD Characteristics; - PIMAGE_THUNK_DATA OriginalFirstThunk; - } ; - DWORD TimeDateStamp; - DWORD ForwarderChain; - DWORD Name; - PIMAGE_THUNK_DATA FirstThunk; -} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR; -typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD NumberOfModuleForwarderRefs; -} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR; -typedef struct _IMAGE_BOUND_FORWARDER_REF { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD Reserved; -} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF; -typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID); -typedef struct _IMAGE_TLS_DIRECTORY { - DWORD StartAddressOfRawData; - DWORD EndAddressOfRawData; - PDWORD AddressOfIndex; - PIMAGE_TLS_CALLBACK *AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; -} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY; -typedef struct _IMAGE_RESOURCE_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - WORD NumberOfNamedEntries; - WORD NumberOfIdEntries; -} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY; -/*_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - DWORD NameOffset:31; - DWORD NameIsString:1; - }DUMMYSTRUCTNAME; - DWORD Name; - WORD Id; - } DUMMYUNIONNAME; - _ANONYMOUS_UNION union { - DWORD OffsetToData; - _ANONYMOUS_STRUCT struct { - DWORD OffsetToDirectory:31; - DWORD DataIsDirectory:1; - } DUMMYSTRUCTNAME2; - } DUMMYUNIONNAME2; -} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY; -*/ -typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { - WORD Length; - CHAR NameString[1]; -} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING; -typedef struct _IMAGE_RESOURCE_DIR_STRING_U { - WORD Length; - WCHAR NameString[1]; -} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U; -typedef struct _IMAGE_RESOURCE_DATA_ENTRY { - DWORD OffsetToData; - DWORD Size; - DWORD CodePage; - DWORD Reserved; -} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY; -typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - DWORD DeCommitFreeBlockThreshold; - DWORD DeCommitTotalFreeThreshold; - PVOID LockPrefixTable; - DWORD MaximumAllocationSize; - DWORD VirtualMemoryThreshold; - DWORD ProcessHeapFlags; - DWORD Reserved[4]; -} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY; -typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { - DWORD BeginAddress; - DWORD EndAddress; - PVOID ExceptionHandler; - PVOID HandlerData; - DWORD PrologEndAddress; -} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY; -typedef struct _IMAGE_DEBUG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Type; - DWORD SizeOfData; - DWORD AddressOfRawData; - DWORD PointerToRawData; -} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY; -typedef struct _FPO_DATA { - DWORD ulOffStart; - DWORD cbProcSize; - DWORD cdwLocals; - WORD cdwParams; - WORD cbProlog:8; - WORD cbRegs:3; - WORD fHasSEH:1; - WORD fUseBP:1; - WORD reserved:1; - WORD cbFrame:2; -} FPO_DATA,*PFPO_DATA; -typedef struct _IMAGE_DEBUG_MISC { - DWORD DataType; - DWORD Length; - BOOLEAN Unicode; - BYTE Reserved[3]; - BYTE Data[1]; -} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC; -typedef struct _IMAGE_FUNCTION_ENTRY { - DWORD StartingAddress; - DWORD EndingAddress; - DWORD EndOfPrologue; -} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY; -typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { - WORD Signature; - WORD Flags; - WORD Machine; - WORD Characteristics; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - DWORD ExportedNamesSize; - DWORD DebugDirectorySize; - DWORD Reserved[3]; -} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER; -#pragma pack(pop) - -#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff) - -// -// Each directory contains the 32-bit Name of the entry and an offset, -// relative to the beginning of the resource directory of the data associated -// with this directory entry. If the name of the entry is an actual text -// string instead of an integer Id, then the high order bit of the name field -// is set to one and the low order 31-bits are an offset, relative to the -// beginning of the resource directory of the string, which is of type -// IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the -// low-order 16-bits are the integer Id that identify this resource directory -// entry. If the directory entry is yet another resource directory (i.e. a -// subdirectory), then the high order bit of the offset field will be -// set to indicate this. Otherwise the high bit is clear and the offset -// field points to a resource data entry. -// -typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { - DWORD Name; - DWORD OffsetToData; -} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY; -/* -typedef struct _IMAGE_RESOURCE_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - WORD NumberOfNamedEntries; - WORD NumberOfIdEntries; - IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[0]; -} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; -*/ - -#ifdef _WIN64 -#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC -#else -#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC -#endif - -#endif /* !__USE_W32API */ - -#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) - -#define IMAGE_SECTION_CHAR_CODE 0x00000020 -#define IMAGE_SECTION_CHAR_DATA 0x00000040 -#define IMAGE_SECTION_CHAR_BSS 0x00000080 -#define IMAGE_SECTION_CHAR_NON_CACHABLE 0x04000000 -#define IMAGE_SECTION_CHAR_NON_PAGEABLE 0x08000000 -#define IMAGE_SECTION_CHAR_SHARED 0x10000000 -#define IMAGE_SECTION_CHAR_EXECUTABLE 0x20000000 -#define IMAGE_SECTION_CHAR_READABLE 0x40000000 -#define IMAGE_SECTION_CHAR_WRITABLE 0x80000000 -#define IMAGE_SECTION_NOLOAD 0x00000002 - -#define IMAGE_DOS_MAGIC 0x5a4d -#define IMAGE_PE_MAGIC 0x00004550 - -#define IMAGE_NT_SIGNATURE 0x00004550 - - -#define IMAGE_SIZEOF_FILE_HEADER 20 - - -#define IMAGE_SUBSYSTEM_UNKNOWN 0 -#define IMAGE_SUBSYSTEM_NATIVE 1 -#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 -#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 -#define IMAGE_SUBSYSTEM_OS2_GUI 4 -#define IMAGE_SUBSYSTEM_OS2_CUI 5 -#define IMAGE_SUBSYSTEM_POSIX_GUI 6 -#define IMAGE_SUBSYSTEM_POSIX_CUI 7 -#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 -#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 -#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 -#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 -#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 -#define IMAGE_SUBSYSTEM_EFI_ROM 13 -#define IMAGE_SUBSYSTEM_XBOX 14 - - -// Directory Entries - -#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory -#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory -#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory -#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory -#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory -#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table -#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory -#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String -#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP) -#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory -#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory -#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 // Bound Import Directory in headers -#define IMAGE_DIRECTORY_ENTRY_IAT 12 // Import Address -// -// Section header format. -// -#define IMAGE_SIZEOF_FILE_HEADER 20 -#define IMAGE_FILE_MACHINE_UNKNOWN 0 -#define IMAGE_NT_SIGNATURE 0x00004550 -#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b -#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b -#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 -#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 -#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 -#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 -#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 -#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224 -#define IMAGE_SIZEOF_SECTION_HEADER 40 -#define IMAGE_SIZEOF_AUX_SYMBOL 18 -#define IMAGE_SIZEOF_RELOCATION 10 -#define IMAGE_SIZEOF_BASE_RELOCATION 8 -#define IMAGE_SIZEOF_LINENUMBER 6 -#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 -#define SIZEOF_RFPO_DATA 16 -#define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader)) -/* Temporarily adding this here. This file will die soon. */ -#define IMAGE_SCN_TYPE_NOLOAD 0x2L -#define IMAGE_SCN_TYPE_NO_PAD 8 -#define IMAGE_SCN_CNT_CODE 32 -#define IMAGE_SCN_CNT_INITIALIZED_DATA 64 -#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128 -#define IMAGE_SCN_LNK_OTHER 256 -#define IMAGE_SCN_LNK_INFO 512 -#define IMAGE_SCN_LNK_REMOVE 2048 -#define IMAGE_SCN_LNK_COMDAT 4096 -#define IMAGE_SCN_MEM_FARDATA 0x8000 -#define IMAGE_SCN_MEM_PURGEABLE 0x20000 -#define IMAGE_SCN_MEM_16BIT 0x20000 -#define IMAGE_SCN_MEM_LOCKED 0x40000 -#define IMAGE_SCN_MEM_PRELOAD 0x80000 -#define IMAGE_SCN_ALIGN_1BYTES 0x100000 -#define IMAGE_SCN_ALIGN_2BYTES 0x200000 -#define IMAGE_SCN_ALIGN_4BYTES 0x300000 -#define IMAGE_SCN_ALIGN_8BYTES 0x400000 -#define IMAGE_SCN_ALIGN_16BYTES 0x500000 -#define IMAGE_SCN_ALIGN_32BYTES 0x600000 -#define IMAGE_SCN_ALIGN_64BYTES 0x700000 -#define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000 -#define IMAGE_SCN_MEM_DISCARDABLE 0x2000000 -#define IMAGE_SCN_MEM_NOT_CACHED 0x4000000 -#define IMAGE_SCN_MEM_NOT_PAGED 0x8000000 -#define IMAGE_SCN_MEM_SHARED 0x10000000 -#define IMAGE_SCN_MEM_EXECUTE 0x20000000 -#define IMAGE_SCN_MEM_READ 0x40000000 -#define IMAGE_SCN_MEM_WRITE 0x80000000 -#define IMAGE_SYM_UNDEFINED 0 -#define IMAGE_SYM_ABSOLUTE (-1) -#define IMAGE_SYM_DEBUG (-2) -#define IMAGE_SYM_TYPE_NULL 0 -#define IMAGE_SYM_TYPE_VOID 1 -#define IMAGE_SYM_TYPE_CHAR 2 -#define IMAGE_SYM_TYPE_SHORT 3 -#define IMAGE_SYM_TYPE_INT 4 -#define IMAGE_SYM_TYPE_LONG 5 -#define IMAGE_SYM_TYPE_FLOAT 6 -#define IMAGE_SYM_TYPE_DOUBLE 7 -#define IMAGE_SYM_TYPE_STRUCT 8 -#define IMAGE_SYM_TYPE_UNION 9 -#define IMAGE_SYM_TYPE_ENUM 10 -#define IMAGE_SYM_TYPE_MOE 11 -#define IMAGE_SYM_TYPE_BYTE 12 -#define IMAGE_SYM_TYPE_WORD 13 -#define IMAGE_SYM_TYPE_UINT 14 -#define IMAGE_SYM_TYPE_DWORD 15 -#define IMAGE_SYM_TYPE_PCODE 32768 -#define IMAGE_SYM_DTYPE_NULL 0 -#define IMAGE_SYM_DTYPE_POINTER 1 -#define IMAGE_SYM_DTYPE_FUNCTION 2 -#define IMAGE_SYM_DTYPE_ARRAY 3 -#define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1) -#define IMAGE_SYM_CLASS_NULL 0 -#define IMAGE_SYM_CLASS_AUTOMATIC 1 -#define IMAGE_SYM_CLASS_EXTERNAL 2 -#define IMAGE_SYM_CLASS_STATIC 3 -#define IMAGE_SYM_CLASS_REGISTER 4 -#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 -#define IMAGE_SYM_CLASS_LABEL 6 -#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 -#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 -#define IMAGE_SYM_CLASS_ARGUMENT 9 -#define IMAGE_SYM_CLASS_STRUCT_TAG 10 -#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 -#define IMAGE_SYM_CLASS_UNION_TAG 12 -#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 -#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 -#define IMAGE_SYM_CLASS_ENUM_TAG 15 -#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 -#define IMAGE_SYM_CLASS_REGISTER_PARAM 17 -#define IMAGE_SYM_CLASS_BIT_FIELD 18 -#define IMAGE_SYM_CLASS_FAR_EXTERNAL 68 -#define IMAGE_SYM_CLASS_BLOCK 100 -#define IMAGE_SYM_CLASS_FUNCTION 101 -#define IMAGE_SYM_CLASS_END_OF_STRUCT 102 -#define IMAGE_SYM_CLASS_FILE 103 -#define IMAGE_SYM_CLASS_SECTION 104 -#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 -#define IMAGE_COMDAT_SELECT_NODUPLICATES 1 -#define IMAGE_COMDAT_SELECT_ANY 2 -#define IMAGE_COMDAT_SELECT_SAME_SIZE 3 -#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 -#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 -#define IMAGE_COMDAT_SELECT_LARGEST 6 -#define IMAGE_COMDAT_SELECT_NEWEST 7 -#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 -#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 -#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 -#define IMAGE_REL_I386_ABSOLUTE 0 -#define IMAGE_REL_I386_DIR16 1 -#define IMAGE_REL_I386_REL16 2 -#define IMAGE_REL_I386_DIR32 6 -#define IMAGE_REL_I386_DIR32NB 7 -#define IMAGE_REL_I386_SEG12 9 -#define IMAGE_REL_I386_SECTION 10 -#define IMAGE_REL_I386_SECREL 11 -#define IMAGE_REL_I386_REL32 20 -#define IMAGE_REL_MIPS_ABSOLUTE 0 -#define IMAGE_REL_MIPS_REFHALF 1 -#define IMAGE_REL_MIPS_REFWORD 2 -#define IMAGE_REL_MIPS_JMPADDR 3 -#define IMAGE_REL_MIPS_REFHI 4 -#define IMAGE_REL_MIPS_REFLO 5 -#define IMAGE_REL_MIPS_GPREL 6 -#define IMAGE_REL_MIPS_LITERAL 7 -#define IMAGE_REL_MIPS_SECTION 10 -#define IMAGE_REL_MIPS_SECREL 11 -#define IMAGE_REL_MIPS_SECRELLO 12 -#define IMAGE_REL_MIPS_SECRELHI 13 -#define IMAGE_REL_MIPS_REFWORDNB 34 -#define IMAGE_REL_MIPS_PAIR 35 -#define IMAGE_REL_ALPHA_ABSOLUTE 0 -#define IMAGE_REL_ALPHA_REFLONG 1 -#define IMAGE_REL_ALPHA_REFQUAD 2 -#define IMAGE_REL_ALPHA_GPREL32 3 -#define IMAGE_REL_ALPHA_LITERAL 4 -#define IMAGE_REL_ALPHA_LITUSE 5 -#define IMAGE_REL_ALPHA_GPDISP 6 -#define IMAGE_REL_ALPHA_BRADDR 7 -#define IMAGE_REL_ALPHA_HINT 8 -#define IMAGE_REL_ALPHA_INLINE_REFLONG 9 -#define IMAGE_REL_ALPHA_REFHI 10 -#define IMAGE_REL_ALPHA_REFLO 11 -#define IMAGE_REL_ALPHA_PAIR 12 -#define IMAGE_REL_ALPHA_MATCH 13 -#define IMAGE_REL_ALPHA_SECTION 14 -#define IMAGE_REL_ALPHA_SECREL 15 -#define IMAGE_REL_ALPHA_REFLONGNB 16 -#define IMAGE_REL_ALPHA_SECRELLO 17 -#define IMAGE_REL_ALPHA_SECRELHI 18 -#define IMAGE_REL_PPC_ABSOLUTE 0 -#define IMAGE_REL_PPC_ADDR64 1 -#define IMAGE_REL_PPC_ADDR32 2 -#define IMAGE_REL_PPC_ADDR24 3 -#define IMAGE_REL_PPC_ADDR16 4 -#define IMAGE_REL_PPC_ADDR14 5 -#define IMAGE_REL_PPC_REL24 6 -#define IMAGE_REL_PPC_REL14 7 -#define IMAGE_REL_PPC_TOCREL16 8 -#define IMAGE_REL_PPC_TOCREL14 9 -#define IMAGE_REL_PPC_ADDR32NB 10 -#define IMAGE_REL_PPC_SECREL 11 -#define IMAGE_REL_PPC_SECTION 12 -#define IMAGE_REL_PPC_IFGLUE 13 -#define IMAGE_REL_PPC_IMGLUE 14 -#define IMAGE_REL_PPC_SECREL16 15 -#define IMAGE_REL_PPC_REFHI 16 -#define IMAGE_REL_PPC_REFLO 17 -#define IMAGE_REL_PPC_PAIR 18 -#define IMAGE_REL_PPC_TYPEMASK 255 -#define IMAGE_REL_PPC_NEG 256 -#define IMAGE_REL_PPC_BRTAKEN 512 -#define IMAGE_REL_PPC_BRNTAKEN 1024 -#define IMAGE_REL_PPC_TOCDEFN 2048 -#define IMAGE_REL_BASED_ABSOLUTE 0 -#define IMAGE_REL_BASED_HIGH 1 -#define IMAGE_REL_BASED_LOW 2 -#define IMAGE_REL_BASED_HIGHLOW 3 -#define IMAGE_REL_BASED_HIGHADJ 4 -#define IMAGE_REL_BASED_MIPS_JMPADDR 5 -#define IMAGE_ARCHIVE_START_SIZE 8 -#define IMAGE_ARCHIVE_START "!\n" -#define IMAGE_ARCHIVE_END "`\n" -#define IMAGE_ARCHIVE_PAD "\n" -#define IMAGE_ARCHIVE_LINKER_MEMBER "/ " -#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " -#define IMAGE_ORDINAL_FLAG 0x80000000 -#define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0) -#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 -#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 -#define IMAGE_DEBUG_TYPE_UNKNOWN 0 -#define IMAGE_DEBUG_TYPE_COFF 1 -#define IMAGE_DEBUG_TYPE_CODEVIEW 2 -#define IMAGE_DEBUG_TYPE_FPO 3 -#define IMAGE_DEBUG_TYPE_MISC 4 -#define IMAGE_DEBUG_TYPE_EXCEPTION 5 -#define IMAGE_DEBUG_TYPE_FIXUP 6 -#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 -#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 - - -#define IMAGE_SIZEOF_SHORT_NAME 8 - -#define IMAGE_SIZEOF_SECTION_HEADER 40 - -#define IMAGE_SECTION_CODE (0x20) -#define IMAGE_SECTION_INITIALIZED_DATA (0x40) -#define IMAGE_SECTION_UNINITIALIZED_DATA (0x80) - -// -// Import Format -// - -#define IMAGE_ORDINAL_FLAG 0x80000000 - - -// Predefined resource types ... there may be some more, but I don't have -// the information yet. .....sang cho..... - -#define RT_NEWRESOURCE 0x2000 -#define RT_ERROR 0x7fff -#define NEWBITMAP (RT_BITMAP|RT_NEWRESOURCE) -#define NEWMENU (RT_MENU|RT_NEWRESOURCE) -#define NEWDIALOG (RT_DIALOG|RT_NEWRESOURCE) - - -// -// Resource Format. -// - -// -// Resource directory consists of two counts, following by a variable length -// array of directory entries. The first count is the number of entries at -// beginning of the array that have actual names associated with each entry. -// The entries are in ascending order, case insensitive strings. The second -// count is the number of entries that immediately follow the named entries. -// This second count identifies the number of entries that have 16-bit integer -// Ids as their name. These entries are also sorted in ascending order. -// -// This structure allows fast lookup by either name or number, but for any -// given resource entry only one form of lookup is supported, not both. -// This is consistant with the syntax of the .RC file and the .RES file. -// - - -#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 -#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 - - - -// -// For resource directory entries that have actual string names, the Name -// field of the directory entry points to an object of the following type. -// All of these string objects are stored together after the last resource -// directory entry and before the first resource data object. This minimizes -// the impact of these variable length objects on the alignment of the fixed -// size directory entry objects. -// -/* defined above from mingw. ei -typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { - WORD Length; - CHAR NameString[ 1 ]; -} IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; - - -typedef struct _IMAGE_RESOURCE_DIR_STRING_U { - WORD Length; - WCHAR NameString[ 1 ]; -} IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U; -*/ - -// -// Each resource data entry describes a leaf node in the resource directory -// tree. It contains an offset, relative to the beginning of the resource -// directory of the data for the resource, a size field that gives the number -// of bytes of data at that offset, a CodePage that should be used when -// decoding code point values within the resource data. Typically for new -// applications the code page would be the unicode code page. -// -/* ei -typedef struct _IMAGE_RESOURCE_DATA_ENTRY { - DWORD OffsetToData; - DWORD Size; - DWORD CodePage; - DWORD Reserved; -} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; -*/ - -// Menu Resources ... added by .....sang cho.... - -// Menu resources are composed of a menu header followed by a sequential list -// of menu items. There are two types of menu items: pop-ups and normal menu -// itmes. The MENUITEM SEPARATOR is a special case of a normal menu item with -// an empty name, zero ID, and zero flags. - -typedef struct _IMAGE_MENU_HEADER{ - WORD wVersion; // Currently zero - WORD cbHeaderSize; // Also zero -} IMAGE_MENU_HEADER, *PIMAGE_MENU_HEADER; - -typedef struct _IMAGE_POPUP_MENU_ITEM{ - WORD fItemFlags; - WCHAR szItemText[1]; -} IMAGE_POPUP_MENU_ITEM, *PIMAGE_POPUP_MENU_ITEM; - -typedef struct _IMAGE_NORMAL_MENU_ITEM{ - WORD fItemFlags; - WORD wMenuID; - WCHAR szItemText[1]; -} IMAGE_NORMAL_MENU_ITEM, *PIMAGE_NORMAL_MENU_ITEM; - -#define MI_GRAYED 0x0001 // GRAYED keyword -#define MI_INACTIVE 0x0002 // INACTIVE keyword -#define MI_BITMAP 0x0004 // BITMAP keyword -#define MI_OWNERDRAW 0x0100 // OWNERDRAW keyword -#define MI_CHECKED 0x0008 // CHECKED keyword -#define MI_POPUP 0x0010 // used internally -#define MI_MENUBARBREAK 0x0020 // MENUBARBREAK keyword -#define MI_MENUBREAK 0x0040 // MENUBREAK keyword -#define MI_ENDMENU 0x0080 // used internally - -// Dialog Box Resources .................. added by sang cho. - -// A dialog box is contained in a single resource and has a header and -// a portion repeated for each control in the dialog box. -// The item DWORD IStyle is a standard window style composed of flags found -// in WINDOWS.H. -// The default style for a dialog box is: -// WS_POPUP | WS_BORDER | WS_SYSMENU -// -// The itme marked "Name or Ordinal" are : -// If the first word is an 0xffff, the next two bytes contain an ordinal ID. -// Otherwise, the first one or more WORDS contain a double-null-terminated string. -// An empty string is represented by a single WORD zero in the first location. -// -// The WORD wPointSize and WCHAR szFontName entries are present if the FONT -// statement was included for the dialog box. This can be detected by checking -// the entry IStyle. If IStyle & DS_SETFONT ( which is 0x40), then these -// entries will be present. - -typedef struct _IMAGE_DIALOG_BOX_HEADER1{ - DWORD IStyle; - DWORD IExtendedStyle; // New for Windows NT - WORD nControls; // Number of Controls - WORD x; - WORD y; - WORD cx; - WORD cy; -// N_OR_O MenuName; // Name or Ordinal ID -// N_OR_O ClassName; // Name or Ordinal ID -// WCHAR szCaption[]; -// WORD wPointSize; // Only here if FONT set for dialog -// WCHAR szFontName[]; // This too -} IMAGE_DIALOG_HEADER, *PIMAGE_DIALOG_HEADER; - -typedef union _NAME_OR_ORDINAL{ // Name or Ordinal ID - struct _ORD_ID{ - WORD flgId; - WORD Id; - } ORD_ID; - WCHAR szName[1]; -} NAME_OR_ORDINAL, *PNAME_OR_ORDINAL; - -// The data for each control starts on a DWORD boundary (which may require -// some padding from the previous control), and its format is as follows: - -typedef struct _IMAGE_CONTROL_DATA{ - DWORD IStyle; - DWORD IExtendedStyle; - WORD x; - WORD y; - WORD cx; - WORD cy; - WORD wId; -// N_OR_O ClassId; -// N_OR_O Text; -// WORD nExtraStuff; -} IMAGE_CONTROL_DATA, *PIMAGE_CONTROL_DATA; - -#define BUTTON 0x80 -#define EDIT 0x81 -//#define STATIC 0x82 -#define LISTBOX 0x83 -#define SCROLLBAR 0x84 -#define COMBOBOX 0x85 - -// The various statements used in a dialog script are all mapped to these -// classes along with certain modifying styles. The values for these styles -// can be found in WINDOWS.H. All dialog controls have the default styles -// of WS_CHILD and WS_VISIBLE. A list of the default styles used follows: -// -// Statement Default Class Default Styles -// CONTROL None WS_CHILD|WS_VISIBLE -// LTEXT STATIC ES_LEFT -// RTEXT STATIC ES_RIGHT -// CTEXT STATIC ES_CENTER -// LISTBOX LISTBOX WS_BORDER|LBS_NOTIFY -// CHECKBOX BUTTON BS_CHECKBOX|WS_TABSTOP -// PUSHBUTTON BUTTON BS_PUSHBUTTON|WS_TABSTOP -// GROUPBOX BUTTON BS_GROUPBOX -// DEFPUSHBUTTON BUTTON BS_DFPUSHBUTTON|WS_TABSTOP -// RADIOBUTTON BUTTON BS_RADIOBUTTON -// AUTOCHECKBOX BUTTON BS_AUTOCHECKBOX -// AUTO3STATE BUTTON BS_AUTO3STATE -// AUTORADIOBUTTON BUTTON BS_AUTORADIOBUTTON -// PUSHBOX BUTTON BS_PUSHBOX -// STATE3 BUTTON BS_3STATE -// EDITTEXT EDIT ES_LEFT|WS_BORDER|WS_TABSTOP -// COMBOBOX COMBOBOX None -// ICON STATIC SS_ICON -// SCROLLBAR SCROLLBAR None -/// - -#define IMAGE_DEBUG_TYPE_UNKNOWN 0 -#define IMAGE_DEBUG_TYPE_COFF 1 -#define IMAGE_DEBUG_TYPE_CODEVIEW 2 -#define IMAGE_DEBUG_TYPE_FPO 3 -#define IMAGE_DEBUG_TYPE_MISC 4 -#define IMAGE_DEBUG_TYPE_EXCEPTION 5 -#define IMAGE_DEBUG_TYPE_FIXUP 6 -#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 -#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 - - - -// -// Debugging information can be stripped from an image file and placed -// in a separate .DBG file, whose file name part is the same as the -// image file name part (e.g. symbols for CMD.EXE could be stripped -// and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED -// flag in the Characteristics field of the file header. The beginning of -// the .DBG file contains the following structure which captures certain -// information from the image file. This allows a debug to proceed even if -// the original image file is not accessable. This header is followed by -// zero of more IMAGE_SECTION_HEADER structures, followed by zero or more -// IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in -// the image file contain file offsets relative to the beginning of the -// .DBG file. -// -// If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure -// is left in the image file, but not mapped. This allows a debugger to -// compute the name of the .DBG file, from the name of the image in the -// IMAGE_DEBUG_MISC structure. -// -/* ei -typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { - WORD Signature; - WORD Flags; - WORD Machine; - WORD Characteristics; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - DWORD ExportedNamesSize; - DWORD DebugDirectorySize; - DWORD SectionAlignment; - DWORD Reserved[2]; -} IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER; -*/ -#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 - -#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000 -#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000 // when DBG was updated, the - // old checksum didn't match. - -// -// End Image Format -// - -#define SIZE_OF_NT_SIGNATURE sizeof (DWORD) -#define MAXRESOURCENAME 13 - -/* global macros to define header offsets into file */ -/* offset to PE file signature */ -#define NTSIGNATURE(a) ((LPVOID)((BYTE *)a + \ - ((PIMAGE_DOS_HEADER)a)->e_lfanew)) - -/* DOS header identifies the NT PEFile signature dword - the PEFILE header exists just after that dword */ -#define PEFHDROFFSET(a) ((LPVOID)((BYTE *)a + \ - ((PIMAGE_DOS_HEADER)a)->e_lfanew + \ - SIZE_OF_NT_SIGNATURE)) - -/* PE optional header is immediately after PEFile header */ -#define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a + \ - ((PIMAGE_DOS_HEADER)a)->e_lfanew + \ - SIZE_OF_NT_SIGNATURE + \ - sizeof (IMAGE_FILE_HEADER))) - -/* section headers are immediately after PE optional header */ -#define SECHDROFFSET(a) ((LPVOID)((BYTE *)a + \ - ((PIMAGE_DOS_HEADER)a)->e_lfanew + \ - SIZE_OF_NT_SIGNATURE + \ - sizeof (IMAGE_FILE_HEADER) + \ - sizeof (IMAGE_OPTIONAL_HEADER))) - -//#define FIELD_OFFSET(type, field) ((LONG)(LONG_PTR)&(((type *)0)->field)) -/* defined above ei -#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \ - ((ULONG_PTR)ntheader + \ - FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \ - ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \ - )) -*/ - -#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD)(ptr) + (DWORD)(addValue)) - -typedef struct _IMAGE_IMPORT_MODULE_DIRECTORY -{ - DWORD dwRVAFunctionNameList; - DWORD dwUseless1; - DWORD dwUseless2; - DWORD dwRVAModuleName; - DWORD dwRVAFunctionAddressList; -} IMAGE_IMPORT_MODULE_DIRECTORY, *PIMAGE_IMPORT_MODULE_DIRECTORY; - -typedef struct _RELOCATION_DIRECTORY -{ - DWORD VirtualAddress; /* adresse virtuelle du bloc ou se font les relocations */ - DWORD SizeOfBlock; // taille de cette structure + des structures - // relocation_entry qui suivent (ces dernieres sont - // donc au nombre de (SizeOfBlock-8)/2 -} RELOCATION_DIRECTORY, *PRELOCATION_DIRECTORY; - -typedef struct _RELOCATION_ENTRY -{ - WORD TypeOffset; - // (TypeOffset >> 12) est le type - // (TypeOffset&0xfff) est l'offset dans le bloc -} RELOCATION_ENTRY, *PRELOCATION_ENTRY; - -#define TYPE_RELOC_ABSOLUTE 0 -#define TYPE_RELOC_HIGH 1 -#define TYPE_RELOC_LOW 2 -#define TYPE_RELOC_HIGHLOW 3 -#define TYPE_RELOC_HIGHADJ 4 -#define TYPE_RELOC_MIPS_JMPADDR 5 - -#endif /* __INCLUDE_PE_H */ diff --git a/reactos/include/snmp.h b/reactos/include/snmp.h deleted file mode 100644 index 55b6a1fee41..00000000000 --- a/reactos/include/snmp.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - * ReactOS Simple Network Management Protocol - SNMP - * - * snmp.h - * - * Copyright (C) 2002 Robert Dickenson - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __SNMP_H__ -#define __SNMP_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -/////////////////////////////////////////////////////////////////////////////// -// SNMP Error Codes -// - -#define SNMP_MEM_ALLOC_ERROR 1 -#define SNMP_BERAPI_INVALID_LENGTH 10 -#define SNMP_BERAPI_INVALID_TAG 11 -#define SNMP_BERAPI_OVERFLOW 12 -#define SNMP_BERAPI_SHORT_BUFFER 13 -#define SNMP_BERAPI_INVALID_OBJELEM 14 -#define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 -#define SNMP_PDUAPI_INVALID_ES 21 -#define SNMP_PDUAPI_INVALID_GT 22 -#define SNMP_AUTHAPI_INVALID_VERSION 30 -#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 -#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 - -//////////////////////////////////////////////////////////////////////////////// -// SNMP Type Definitions -// - -#include - -typedef struct { - BYTE* stream; - UINT length; - BOOL dynamic; -} AsnOctetString; - -typedef struct { - UINT idLength; - UINT* ids; -} AsnObjectIdentifier; - -typedef LONG AsnInteger32; -typedef ULONG AsnUnsigned32; -typedef ULARGE_INTEGER AsnCounter64; -typedef AsnUnsigned32 AsnCounter32; -typedef AsnUnsigned32 AsnGauge32; -typedef AsnUnsigned32 AsnTimeticks; -typedef AsnOctetString AsnBits; -typedef AsnOctetString AsnSequence; -typedef AsnOctetString AsnImplicitSequence; -typedef AsnOctetString AsnIPAddress; -typedef AsnOctetString AsnNetworkAddress; -typedef AsnOctetString AsnDisplayString; -typedef AsnOctetString AsnOpaque; - -typedef struct { - BYTE asnType; - union { - AsnInteger32 number; // ASN_INTEGER & ASN_INTEGER32 - AsnUnsigned32 unsigned32; // ASN_UNSIGNED32 - AsnCounter64 counter64; // ASN_COUNTER64 - AsnOctetString string; // ASN_OCTETSTRING - AsnBits bits; // ASN_BITS - AsnObjectIdentifier object; // ASN_OBJECTIDENTIFIER - AsnSequence sequence; // ASN_SEQUENCE - AsnIPAddress address; // ASN_IPADDRESS - AsnCounter32 counter; // ASN_COUNTER32 - AsnGauge32 gauge; // ASN_GAUGE32 - AsnTimeticks ticks; // ASN_TIMETICKS - AsnOpaque arbitrary; // ASN_OPAQUE - } asnValue; -} AsnAny; - -typedef AsnObjectIdentifier AsnObjectName; -typedef AsnAny AsnObjectSyntax; - -typedef struct { - AsnObjectName name; - AsnObjectSyntax value; -} SnmpVarBind; - -typedef struct { - SnmpVarBind* list; - UINT len; -} SnmpVarBindList; - -#include - -//////////////////////////////////////////////////////////////////////////////// -// SNMP Function Prototypes -// - -#define SNMPAPI INT -#ifndef SNMP_FUNC_TYPE -#define SNMP_FUNC_TYPE STDCALL -#endif - -//LPVOID SNMP_FUNC_TYPE SnmpUtilMemAlloc(UINT nBytes); -//VOID SNMP_FUNC_TYPE SnmpUtilMemFree(LPVOID pMem); -//SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCpy(AsnObjectIdentifier* pOidDst, AsnObjectIdentifier* pOidSrc); -//VOID SNMP_FUNC_TYPE SnmpUtilOidFree(AsnObjectIdentifier* pOid); -//VOID SNMP_FUNC_TYPE SnmpUtilVarBindFree(SnmpVarBind* pVb); - -LPVOID SNMP_FUNC_TYPE SnmpUtilMemAlloc( - UINT nBytes // bytes to allocate for object -); - -VOID SNMP_FUNC_TYPE SnmpUtilMemFree( - LPVOID pMem // pointer to memory object to release -); - -LPVOID SNMP_FUNC_TYPE SnmpUtilMemReAlloc( - LPVOID pMem, // pointer to memory object - UINT nBytes // bytes to allocate -); - -VOID SNMP_FUNC_TYPE SnmpSvcInitUptime(); - -DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime(); - -VOID SNMP_FUNC_TYPE SnmpSvcSetLogLevel( - INT nLogLevel // level of severity of the event -); - -VOID SNMP_FUNC_TYPE SnmpSvcSetLogType( - INT nLogType // destination for debug output -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilAsnAnyCpy( - AsnAny *pAnyDst, // destination structure - AsnAny *pAnySrc // source structure -); - -VOID SNMP_FUNC_TYPE SnmpUtilAsnAnyFree( - AsnAny *pAny // pointer to structure to free -); - -//VOID SNMP_FUNC_TYPE SnmpUtilDbgPrint( -// INT nLogLevel, // level of severity of event -// LPSTR szFormat // pointer to a format string -//); - -LPSTR SNMP_FUNC_TYPE SnmpUtilIdsToA( - UINT *Ids, // object identifier to convert - UINT IdLength // number of elements -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCmp( - AsnOctetString *pOctets1, // first octet string - AsnOctetString *pOctets2 // second octet string -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCpy( - AsnOctetString *pOctetsDst, // destination octet string - AsnOctetString *pOctetsSrc // source octet string -); - -VOID SNMP_FUNC_TYPE SnmpUtilOctetsFree( - AsnOctetString *pOctets // octet string to free -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsNCmp( - AsnOctetString *pOctets1, // first octet string - AsnOctetString *pOctets2, // second octet string - UINT nChars // maximum length to compare -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidAppend( - AsnObjectIdentifier *pOidDst, // destination object identifier - AsnObjectIdentifier *pOidSrc // source object identifier -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCmp( - AsnObjectIdentifier *pOid1, // first object identifier - AsnObjectIdentifier *pOid2 // second object identifier -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCpy( - AsnObjectIdentifier *pOidDst, // destination object identifier - AsnObjectIdentifier *pOidSrc // source object identifier -); - -VOID SNMP_FUNC_TYPE SnmpUtilOidFree( - AsnObjectIdentifier *pOid // object identifier to free -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidNCmp( - AsnObjectIdentifier *pOid1, // first object identifier - AsnObjectIdentifier *pOid2, // second object identifier - UINT nSubIds // maximum length to compare -); - -LPSTR SNMP_FUNC_TYPE SnmpUtilOidToA( - AsnObjectIdentifier *Oid // object identifier to convert -); - -VOID SNMP_FUNC_TYPE SnmpUtilPrintAsnAny( - AsnAny *pAny // pointer to value to print -); - -VOID SNMP_FUNC_TYPE SnmpUtilPrintOid( - AsnObjectIdentifier *Oid // object identifier to print -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindCpy( - SnmpVarBind *pVbDst, // destination variable bindings - SnmpVarBind *pVbSrc // source variable bindings -); - -VOID SNMP_FUNC_TYPE SnmpUtilVarBindFree( - SnmpVarBind *pVb // variable binding to free -); - -SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindListCpy( - SnmpVarBindList *pVblDst, // destination variable bindings list - SnmpVarBindList *pVblSrc // source variable bindings list -); - -VOID SNMP_FUNC_TYPE SnmpUtilVarBindListFree( - SnmpVarBindList *pVbl // variable bindings list to free -); - - - -//////////////////////////////////////////////////////////////////////////////// -// SNMP Debugging Definitions -// - -#define SNMP_LOG_SILENT 0x0 -#define SNMP_LOG_FATAL 0x1 -#define SNMP_LOG_ERROR 0x2 -#define SNMP_LOG_WARNING 0x3 -#define SNMP_LOG_TRACE 0x4 -#define SNMP_LOG_VERBOSE 0x5 - -#define SNMP_OUTPUT_TO_CONSOLE 0x1 -#define SNMP_OUTPUT_TO_LOGFILE 0x2 -//#define SNMP_OUTPUT_TO_EVENTLOG 0x4 // no longer supported -#define SNMP_OUTPUT_TO_DEBUGGER 0x8 - -//////////////////////////////////////////////////////////////////////////////// -// SNMP Debugging Prototypes -// - -VOID -SNMP_FUNC_TYPE -SnmpUtilDbgPrint( - IN INT nLogLevel, // see log levels above... - IN LPSTR szFormat, - IN ... - ); - -#if DBG -#define SNMPDBG(_x_) SnmpUtilDbgPrint _x_ -#else -#define SNMPDBG(_x_) -#endif - - -//////////////////////////////////////////////////////////////////////////////// - -#ifdef __cplusplus -}; -#endif - -#endif // __SNMP_H__ - diff --git a/reactos/lib/directory.xml b/reactos/lib/directory.xml index afbfebf5421..d7113e53702 100644 --- a/reactos/lib/directory.xml +++ b/reactos/lib/directory.xml @@ -268,6 +268,9 @@ + + + diff --git a/reactos/lib/kernel32/process/create.c b/reactos/lib/kernel32/process/create.c index 42b0f939956..d47f706a816 100644 --- a/reactos/lib/kernel32/process/create.c +++ b/reactos/lib/kernel32/process/create.c @@ -1110,7 +1110,7 @@ CreateProcessW(LPCWSTR lpApplicationName, * If is possible that this function overwrite the last information in runtimeinfo * with the null terminator for the unicode string. */ - RuntimeInfo_U.Length = RuntimeInfo_U.MaximumLength = ROUND_UP(lpStartupInfo->cbReserved2, 2) + 2; + RuntimeInfo_U.Length = RuntimeInfo_U.MaximumLength = (lpStartupInfo->cbReserved2 + 1) & ~1; RuntimeInfo_U.Buffer = RtlAllocateHeap(GetProcessHeap(), 0, RuntimeInfo_U.Length); memcpy(RuntimeInfo_U.Buffer, lpStartupInfo->lpReserved2, lpStartupInfo->cbReserved2); } diff --git a/reactos/lib/ntdll/ldr/startup.c b/reactos/lib/ntdll/ldr/startup.c index 7f676db0486..370e7e3a475 100644 --- a/reactos/lib/ntdll/ldr/startup.c +++ b/reactos/lib/ntdll/ldr/startup.c @@ -249,9 +249,9 @@ __true_LdrInitializeThunk (ULONG Unknown1, PEDosHeader = (PIMAGE_DOS_HEADER) ImageBase; DPRINT("PEDosHeader %x\n", PEDosHeader); - if (PEDosHeader->e_magic != IMAGE_DOS_MAGIC || + if (PEDosHeader->e_magic != IMAGE_DOS_SIGNATURE || PEDosHeader->e_lfanew == 0L || - *(PULONG)((PUCHAR)ImageBase + PEDosHeader->e_lfanew) != IMAGE_PE_MAGIC) + *(PULONG)((PUCHAR)ImageBase + PEDosHeader->e_lfanew) != IMAGE_NT_SIGNATURE) { DPRINT1("Image has bad header\n"); ZwTerminateProcess(NtCurrentProcess(), STATUS_UNSUCCESSFUL); diff --git a/reactos/lib/ntdll/ldr/utils.c b/reactos/lib/ntdll/ldr/utils.c index 4581d635383..a61d9784001 100644 --- a/reactos/lib/ntdll/ldr/utils.c +++ b/reactos/lib/ntdll/ldr/utils.c @@ -659,9 +659,9 @@ LdrpMapDllImageFile(IN PWSTR SearchPath OPTIONAL, /* * Check it is a PE image file. */ - if ((DosHeader->e_magic != IMAGE_DOS_MAGIC) + if ((DosHeader->e_magic != IMAGE_DOS_SIGNATURE) || (DosHeader->e_lfanew == 0L) - || (*(PULONG)(NTHeaders) != IMAGE_PE_MAGIC)) + || (*(PULONG)(NTHeaders) != IMAGE_NT_SIGNATURE)) { DPRINT("NTDLL format invalid\n"); NtClose(FileHandle); @@ -1365,7 +1365,7 @@ LdrpGetOrLoadModule(PWCHAR SerachPath, static NTSTATUS LdrpProcessImportDirectoryEntry(PLDR_MODULE Module, PLDR_MODULE ImportedModule, - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory) + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory) { NTSTATUS Status; PVOID* ImportAddressList; @@ -1375,22 +1375,22 @@ LdrpProcessImportDirectoryEntry(PLDR_MODULE Module, ULONG Ordinal; ULONG IATSize; - if (ImportModuleDirectory == NULL || ImportModuleDirectory->dwRVAModuleName == 0) + if (ImportModuleDirectory == NULL || ImportModuleDirectory->Name == 0) { return STATUS_UNSUCCESSFUL; } /* Get the import address list. */ - ImportAddressList = (PVOID *)(Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionAddressList); + ImportAddressList = (PVOID *)(Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->FirstThunk); /* Get the list of functions to import. */ - if (ImportModuleDirectory->dwRVAFunctionNameList != 0) + if (ImportModuleDirectory->OriginalFirstThunk != 0) { - FunctionNameList = (PULONG) (Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionNameList); + FunctionNameList = (PULONG) (Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->OriginalFirstThunk); } else { - FunctionNameList = (PULONG)(Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionAddressList); + FunctionNameList = (PULONG)(Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->FirstThunk); } /* Get the size of IAT. */ @@ -1464,14 +1464,14 @@ LdrpProcessImportDirectory( PCHAR ImportedName) { NTSTATUS Status; - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory; PCHAR Name; DPRINT("LdrpProcessImportDirectory(%x '%wZ', '%s')\n", Module, &Module->BaseDllName, ImportedName); - ImportModuleDirectory = (PIMAGE_IMPORT_MODULE_DIRECTORY) + ImportModuleDirectory = (PIMAGE_IMPORT_DESCRIPTOR) RtlImageDirectoryEntryToData(Module->BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, @@ -1481,9 +1481,9 @@ LdrpProcessImportDirectory( return STATUS_UNSUCCESSFUL; } - while (ImportModuleDirectory->dwRVAModuleName) + while (ImportModuleDirectory->Name) { - Name = (PCHAR)Module->BaseAddress + ImportModuleDirectory->dwRVAModuleName; + Name = (PCHAR)Module->BaseAddress + ImportModuleDirectory->Name; if (0 == _stricmp(Name, ImportedName)) { Status = LdrpProcessImportDirectoryEntry(Module, @@ -1507,7 +1507,7 @@ LdrpAdjustImportDirectory(PLDR_MODULE Module, PLDR_MODULE ImportedModule, PCHAR ImportedName) { - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory; NTSTATUS Status; PVOID* ImportAddressList; PVOID Start; @@ -1523,7 +1523,7 @@ LdrpAdjustImportDirectory(PLDR_MODULE Module, DPRINT("LdrpAdjustImportDirectory(Module %x '%wZ', %x '%wZ', %x '%s')\n", Module, &Module->BaseDllName, ImportedModule, &ImportedModule->BaseDllName, ImportedName); - ImportModuleDirectory = (PIMAGE_IMPORT_MODULE_DIRECTORY) + ImportModuleDirectory = (PIMAGE_IMPORT_DESCRIPTOR) RtlImageDirectoryEntryToData(Module->BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, @@ -1533,23 +1533,23 @@ LdrpAdjustImportDirectory(PLDR_MODULE Module, return STATUS_UNSUCCESSFUL; } - while (ImportModuleDirectory->dwRVAModuleName) + while (ImportModuleDirectory->Name) { - Name = (PCHAR)Module->BaseAddress + ImportModuleDirectory->dwRVAModuleName; + Name = (PCHAR)Module->BaseAddress + ImportModuleDirectory->Name; if (0 == _stricmp(Name, (PCHAR)ImportedName)) { /* Get the import address list. */ - ImportAddressList = (PVOID *)(Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionAddressList); + ImportAddressList = (PVOID *)(Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->FirstThunk); /* Get the list of functions to import. */ - if (ImportModuleDirectory->dwRVAFunctionNameList != 0) + if (ImportModuleDirectory->OriginalFirstThunk != 0) { - FunctionNameList = (PULONG) (Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionNameList); + FunctionNameList = (PULONG) (Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->OriginalFirstThunk); } else { - FunctionNameList = (PULONG)(Module->BaseAddress + ImportModuleDirectory->dwRVAFunctionAddressList); + FunctionNameList = (PULONG)(Module->BaseAddress + (ULONG_PTR)ImportModuleDirectory->FirstThunk); } /* Get the size of IAT. */ @@ -1628,8 +1628,8 @@ static NTSTATUS LdrFixupImports(IN PWSTR SearchPath OPTIONAL, IN PLDR_MODULE Module) { - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory; - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectoryCurrent; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectoryCurrent; PIMAGE_BOUND_IMPORT_DESCRIPTOR BoundImportDescriptor; PIMAGE_BOUND_IMPORT_DESCRIPTOR BoundImportDescriptorCurrent; PIMAGE_TLS_DIRECTORY TlsDirectory; @@ -1662,7 +1662,7 @@ LdrFixupImports(IN PWSTR SearchPath OPTIONAL, /* * Process each import module. */ - ImportModuleDirectory = (PIMAGE_IMPORT_MODULE_DIRECTORY) + ImportModuleDirectory = (PIMAGE_IMPORT_DESCRIPTOR) RtlImageDirectoryEntryToData(Module->BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, @@ -1809,9 +1809,9 @@ LdrFixupImports(IN PWSTR SearchPath OPTIONAL, DPRINT("ImportModuleDirectory %x\n", ImportModuleDirectory); ImportModuleDirectoryCurrent = ImportModuleDirectory; - while (ImportModuleDirectoryCurrent->dwRVAModuleName) + while (ImportModuleDirectoryCurrent->Name) { - ImportedName = (PCHAR)Module->BaseAddress + ImportModuleDirectoryCurrent->dwRVAModuleName; + ImportedName = (PCHAR)Module->BaseAddress + ImportModuleDirectoryCurrent->Name; TRACE_LDR("%wZ imports functions from %s\n", &Module->BaseDllName, ImportedName); Status = LdrpGetOrLoadModule(SearchPath, ImportedName, &ImportedModule, TRUE); @@ -2125,7 +2125,7 @@ static NTSTATUS LdrpUnloadModule(PLDR_MODULE Module, BOOLEAN Unload) { - PIMAGE_IMPORT_MODULE_DIRECTORY ImportModuleDirectory; + PIMAGE_IMPORT_DESCRIPTOR ImportModuleDirectory; PIMAGE_BOUND_IMPORT_DESCRIPTOR BoundImportDescriptor; PIMAGE_BOUND_IMPORT_DESCRIPTOR BoundImportDescriptorCurrent; PCHAR ImportedName; @@ -2183,7 +2183,7 @@ LdrpUnloadModule(PLDR_MODULE Module, } else { - ImportModuleDirectory = (PIMAGE_IMPORT_MODULE_DIRECTORY) + ImportModuleDirectory = (PIMAGE_IMPORT_DESCRIPTOR) RtlImageDirectoryEntryToData(Module->BaseAddress, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, @@ -2191,9 +2191,9 @@ LdrpUnloadModule(PLDR_MODULE Module, if (ImportModuleDirectory) { /* dereferencing all imported modules, use the import descriptor */ - while (ImportModuleDirectory->dwRVAModuleName) + while (ImportModuleDirectory->Name) { - ImportedName = (PCHAR)Module->BaseAddress + ImportModuleDirectory->dwRVAModuleName; + ImportedName = (PCHAR)Module->BaseAddress + ImportModuleDirectory->Name; TRACE_LDR("%wZ trys to unload %s\n", &Module->BaseDllName, ImportedName); Status = LdrpGetOrLoadModule(NULL, ImportedName, &ImportedModule, FALSE); if (!NT_SUCCESS(Status)) diff --git a/reactos/lib/smlib/connect.c b/reactos/lib/smlib/connect.c index 8f9124527fb..ac79685a5ec 100644 --- a/reactos/lib/smlib/connect.c +++ b/reactos/lib/smlib/connect.c @@ -8,7 +8,6 @@ #define NTOS_MODE_USER #include #include -#include #define NDEBUG #include diff --git a/reactos/lib/wdmguid/wdmguid.xml b/reactos/lib/wdmguid/wdmguid.xml new file mode 100644 index 00000000000..c46b122d837 --- /dev/null +++ b/reactos/lib/wdmguid/wdmguid.xml @@ -0,0 +1,4 @@ + + + wdmguid.c + diff --git a/reactos/ntoskrnl/cc/view.c b/reactos/ntoskrnl/cc/view.c index 35266a1f1e5..d6c57ab4512 100644 --- a/reactos/ntoskrnl/cc/view.c +++ b/reactos/ntoskrnl/cc/view.c @@ -46,9 +46,6 @@ */ //#define CACHE_BITMAP -#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) -#define ROUND_DOWN(N, S) (((N) % (S)) ? ROUND_UP(N, S) - S : N) - static LIST_ENTRY DirtySegmentListHead; static LIST_ENTRY CacheSegmentListHead; static LIST_ENTRY CacheSegmentLRUListHead; diff --git a/reactos/ntoskrnl/ldr/loader.c b/reactos/ntoskrnl/ldr/loader.c index d45be77a8d1..416a18c78b0 100644 --- a/reactos/ntoskrnl/ldr/loader.c +++ b/reactos/ntoskrnl/ldr/loader.c @@ -46,6 +46,11 @@ STATIC MODULE_TEXT_SECTION NtoskrnlTextSection; STATIC MODULE_TEXT_SECTION LdrHalTextSection; ULONG_PTR LdrHalBase; +#define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a + \ + ((PIMAGE_DOS_HEADER)a)->e_lfanew + \ + IMAGE_SIZEOF_NT_OPTIONAL_HEADER + \ + sizeof (IMAGE_FILE_HEADER))) + #ifndef HIWORD #define HIWORD(X) ((WORD) (((DWORD) (X) >> 16) & 0xFFFF)) #endif diff --git a/reactos/ntoskrnl/ntoskrnl.xml b/reactos/ntoskrnl/ntoskrnl.xml index e78bc5786b1..45e2d422f58 100644 --- a/reactos/ntoskrnl/ntoskrnl.xml +++ b/reactos/ntoskrnl/ntoskrnl.xml @@ -17,6 +17,7 @@ rosrtl rossym string + wdmguid ntoskrnl.h diff --git a/reactos/services/umpnpmgr/umpnpmgr.xml b/reactos/services/umpnpmgr/umpnpmgr.xml index 84ff6f93c73..22dda637441 100644 --- a/reactos/services/umpnpmgr/umpnpmgr.xml +++ b/reactos/services/umpnpmgr/umpnpmgr.xml @@ -9,6 +9,7 @@ kernel32 advapi32 rpcrt4 + wdmguid umpnpmgr.c umpnpmgr.rc diff --git a/reactos/subsys/system/usetup/usetup.h b/reactos/subsys/system/usetup/usetup.h index 4f281f72611..c630cd2086d 100644 --- a/reactos/subsys/system/usetup/usetup.h +++ b/reactos/subsys/system/usetup/usetup.h @@ -32,9 +32,6 @@ #endif #define assert(x) -#define ROUND_DOWN(N, S) (((N) / (S)) * (S)) -#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) - extern HANDLE ProcessHeap; extern UNICODE_STRING SourceRootPath; diff --git a/reactos/w32api/include/winnt.h b/reactos/w32api/include/winnt.h index c58478be710..8412e928b51 100644 --- a/reactos/w32api/include/winnt.h +++ b/reactos/w32api/include/winnt.h @@ -851,7 +851,13 @@ typedef DWORD FLONG; #define IMAGE_OS2_SIGNATURE_LE 0x454C #define IMAGE_VXD_SIGNATURE 0x454C #define IMAGE_NT_SIGNATURE 0x00004550 -#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b +#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b +#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b +#ifdef _WIN64 +#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC +#else +#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC +#endif #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 @@ -888,6 +894,10 @@ typedef DWORD FLONG; #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 #define IMAGE_DIRECTORY_ENTRY_IAT 12 +#define IMAGE_SCN_TYPE_REG 0 +#define IMAGE_SCN_TYPE_DSECT 1 +#define IMAGE_SCN_TYPE_NOLOAD 2 +#define IMAGE_SCN_TYPE_GROUP 4 #define IMAGE_SCN_TYPE_NO_PAD 8 #define IMAGE_SCN_CNT_CODE 32 #define IMAGE_SCN_CNT_INITIALIZED_DATA 64 -- 2.17.1