- Use regular PE structures in NTOSKRNL/NTDLL/DISKDUMP.
authorFilip Navara <filip.navara@gmail.com>
Sun, 19 Jun 2005 00:06:08 +0000 (00:06 +0000)
committerFilip Navara <filip.navara@gmail.com>
Sun, 19 Jun 2005 00:06:08 +0000 (00:06 +0000)
- Add WDMGUID library.
- Get rid of few more headers.

svn path=/trunk/; revision=16067

22 files changed:
reactos/apps/utils/net/arp/arp.c
reactos/drivers/storage/diskdump/diskdump.c
reactos/include/ddk/ddrawint.h
reactos/include/ddk/i386/irql.h [deleted file]
reactos/include/ddk/i386/pagesize.h [deleted file]
reactos/include/internal/port.h [deleted file]
reactos/include/ntos/rtl.h
reactos/include/ole32/guiddef.h [deleted file]
reactos/include/pe.h [deleted file]
reactos/include/snmp.h [deleted file]
reactos/lib/directory.xml
reactos/lib/kernel32/process/create.c
reactos/lib/ntdll/ldr/startup.c
reactos/lib/ntdll/ldr/utils.c
reactos/lib/smlib/connect.c
reactos/lib/wdmguid/wdmguid.xml [new file with mode: 0644]
reactos/ntoskrnl/cc/view.c
reactos/ntoskrnl/ldr/loader.c
reactos/ntoskrnl/ntoskrnl.xml
reactos/services/umpnpmgr/umpnpmgr.xml
reactos/subsys/system/usetup/usetup.h
reactos/w32api/include/winnt.h

index 19bbf0f..897be7b 100644 (file)
@@ -18,8 +18,8 @@
 #include "trace.h"
 
 
-VOID SNMP_FUNC_TYPE SnmpSvcInitUptime();
-DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime();
+VOID WINSNMPAPI SnmpSvcInitUptime();
+DWORD WINSNMPAPI SnmpSvcGetUptime();
 
 ////////////////////////////////////////////////////////////////////////////////
 
index 2ca4d6c..dcce7b3 100644 (file)
@@ -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)
index 568daaa..2467657 100644 (file)
@@ -6,7 +6,6 @@
 #define __DD_INCLUDED__
 
 #include <ddraw.h>
-#include <ole32/guiddef.h>
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/reactos/include/ddk/i386/irql.h b/reactos/include/ddk/i386/irql.h
deleted file mode 100644 (file)
index db7ef23..0000000
+++ /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 (file)
index 5b0c14e..0000000
+++ /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 (file)
index 18c8618..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#ifndef __INCLUDE_INTERNAL_PORT_H
-#define __INCLUDE_INTERNAL_PORT_H
-
-#include <napi/lpc.h>
-
-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 */
index 4f38440..9aecbfd 100755 (executable)
@@ -11,8 +11,8 @@
 
 #endif /* __NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ || __NTDLL__ || __NTAPP__ */
 
-#include <pe.h>
-#include <ole32/guiddef.h>
+#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 (file)
index 02c3b58..0000000
+++ /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 <string.h>
-
-#ifdef __USE_W32API
-#include <basetyps.h>
-#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 (file)
index c083557..0000000
+++ /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 "!<arch>\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 (file)
index 55b6a1f..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- *  ReactOS Simple Network Management Protocol - SNMP
- *
- *  snmp.h
- *
- *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
- *
- *  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 <pshpack4.h>
-
-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 <poppack.h>
-
-////////////////////////////////////////////////////////////////////////////////
-// 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__
-
index afbfebf..d7113e5 100644 (file)
 <directory name="version">\r
        <xi:include href="version/version.xml" />\r
 </directory>\r
+<directory name="wdmguid">\r
+       <xi:include href="wdmguid/wdmguid.xml" />\r
+</directory>\r
 <directory name="wininet">\r
        <xi:include href="wininet/wininet.xml" />\r
 </directory>\r
index 42b0f93..d47f706 100644 (file)
@@ -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);
       }
index 7f676db..370e7e3 100644 (file)
@@ -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);
index 4581d63..a61d978 100644 (file)
@@ -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))
index 8f91245..ac79685 100644 (file)
@@ -8,7 +8,6 @@
 #define NTOS_MODE_USER
 #include <ntos.h>
 #include <sm/helper.h>
-#include <pe.h>
 
 #define NDEBUG
 #include <debug.h>
diff --git a/reactos/lib/wdmguid/wdmguid.xml b/reactos/lib/wdmguid/wdmguid.xml
new file mode 100644 (file)
index 0000000..c46b122
--- /dev/null
@@ -0,0 +1,4 @@
+<module name="wdmguid" type="staticlibrary">\r
+       <define name="__USE_W32API" />\r
+       <file>wdmguid.c</file>\r
+</module>\r
index 35266a1..d6c57ab 100644 (file)
@@ -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;
index d45be77..416a18c 100644 (file)
@@ -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
index e78bc57..45e2d42 100644 (file)
@@ -17,6 +17,7 @@
        <library>rosrtl</library>\r
        <library>rossym</library>\r
        <library>string</library>\r
+       <library>wdmguid</library>\r
        <directory name="include">\r
                <pch>ntoskrnl.h</pch>\r
        </directory>\r
index 84ff6f9..22dda63 100644 (file)
@@ -9,6 +9,7 @@
        <library>kernel32</library>\r
        <library>advapi32</library>\r
        <library>rpcrt4</library>\r
+       <library>wdmguid</library>\r
        <file>umpnpmgr.c</file>\r
        <file>umpnpmgr.rc</file>\r
 </module>\r
index 4f281f7..c630cd2 100644 (file)
@@ -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;
index c58478b..8412e92 100644 (file)
@@ -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