Merge trunk head (r43756)
[reactos.git] / reactos / include / ddk / winddk.h
index 33f2560..0960564 100644 (file)
@@ -31,16 +31,7 @@ extern "C" {
 #include <ntdef.h>
 #include <ntstatus.h>
 
-#ifdef __GNUC__
 #include "intrin.h"
-#endif
-
-#ifdef _NTOSKRNL_
-/* HACKHACKHACK!!! We shouldn't include this header from ntoskrnl! */
-#define NTKERNELAPI
-#else
-#define NTKERNELAPI DECLSPEC_IMPORT
-#endif
 
 #if !defined(_NTHAL_)
 #define NTHALAPI DECLSPEC_IMPORT
@@ -55,10 +46,15 @@ extern "C" {
 #define UNALLIGNED
 
 #define CONST const
-#define VOLATILE volatile
 
 #define RESTRICTED_POINTER
+
+#if defined(_WIN64)
+#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
+#else
 #define POINTER_ALIGNMENT
+#endif
+
 #define DECLSPEC_ADDRSAFE
 
 #ifdef NONAMELESSUNION
@@ -69,18 +65,6 @@ extern "C" {
 # define _DDK_DUMMYUNION_N_MEMBER(n, name) name
 #endif
 
-#if !defined(_NTSYSTEM_)
-#define NTSYSAPI     DECLSPEC_IMPORT
-#define NTSYSCALLAPI DECLSPEC_IMPORT
-#else
-#define NTSYSAPI
-#if defined(_NTDLLBUILD_)
-#define NTSYSCALLAPI
-#else
-#define NTSYSCALLAPI DECLSPEC_ADDRSAFE
-#endif
-#endif
-
 /*
  * Alignment Macros
  */
@@ -102,10 +86,15 @@ extern "C" {
 
 #ifndef __IID_ALIGNED__
     #define __IID_ALIGNED__
-
-    #define IsEqualGUIDAligned(guid1, guid2) \
-        ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \
-            (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) )
+    #ifdef __cplusplus
+        inline int IsEqualGUIDAligned(REFGUID guid1, REFGUID guid2)
+        {
+            return ((*(PLONGLONG)(&guid1) == *(PLONGLONG)(&guid2)) && (*((PLONGLONG)(&guid1) + 1) == *((PLONGLONG)(&guid2) + 1)));
+        }
+    #else
+        #define IsEqualGUIDAligned(guid1, guid2) \
+            ((*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)))
+    #endif 
 #endif
 
 /*
@@ -130,11 +119,6 @@ struct _DRIVE_LAYOUT_INFORMATION;
 struct _DRIVE_LAYOUT_INFORMATION_EX;
 struct _LOADER_PARAMETER_BLOCK;
 
-#ifndef _SECURITY_ATTRIBUTES_
-#define _SECURITY_ATTRIBUTES_
-typedef PVOID PSECURITY_DESCRIPTOR;
-#endif
-typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION;
 typedef PVOID PSID;
 
 #if 1
@@ -168,10 +152,7 @@ typedef enum
 ** Simple structures
 */
 
-typedef LONG KPRIORITY;
 typedef UCHAR KIRQL, *PKIRQL;
-typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
-typedef UCHAR KPROCESSOR_MODE;
 
 typedef enum _MODE {
   KernelMode,
@@ -179,23 +160,6 @@ typedef enum _MODE {
   MaximumMode
 } MODE;
 
-
-/* Structures not exposed to drivers */
-typedef struct _OBJECT_TYPE *POBJECT_TYPE;
-typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
-typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
-typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
-typedef struct _BUS_HANDLER *PBUS_HANDLER;
-
-typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; 
-typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
-typedef struct _ETHREAD *PETHREAD;
-typedef struct _EPROCESS *PEPROCESS;
-typedef struct _IO_TIMER *PIO_TIMER;
-typedef struct _KINTERRUPT *PKINTERRUPT;
-typedef struct _KPROCESS *PKPROCESS;
-typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
-
 //
 // Forwarder
 //
@@ -209,6 +173,7 @@ struct _COMPRESSED_DATA_INFO;
 
 #if (_M_IX86)
 #define KIP0PCRADDRESS                      0xffdff000
+    
 #endif
 
 #define KERNEL_STACK_SIZE                   12288
@@ -1234,8 +1199,8 @@ typedef enum _KSPIN_LOCK_QUEUE_NUMBER
 } KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER;
 
 typedef struct _KSPIN_LOCK_QUEUE {
-  struct _KSPIN_LOCK_QUEUE  *VOLATILE Next;
-  PKSPIN_LOCK VOLATILE  Lock;
+  struct _KSPIN_LOCK_QUEUE  *volatile Next;
+  PKSPIN_LOCK volatile  Lock;
 } KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
 
 typedef struct _KLOCK_QUEUE_HANDLE {
@@ -1291,62 +1256,6 @@ typedef struct _WAIT_CONTEXT_BLOCK {
   PKDPC  BufferChainingDpc;
 } WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
 
-typedef struct _DISPATCHER_HEADER
-{
-    union
-    {
-        struct
-        {
-            UCHAR Type;
-            union
-            {
-                UCHAR Absolute;
-                UCHAR NpxIrql;
-            };
-            union
-            {
-                UCHAR Size;
-                UCHAR Hand;
-            };
-            union
-            {
-                UCHAR Inserted;
-                BOOLEAN DebugActive;
-            };
-        };
-        volatile LONG Lock;
-    };
-    LONG SignalState;
-    LIST_ENTRY WaitListHead;
-} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
-
-typedef struct _KEVENT {
-  DISPATCHER_HEADER  Header;
-} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
-
-typedef struct _KSEMAPHORE {
-    DISPATCHER_HEADER Header;
-    LONG Limit;
-} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
-
-typedef struct _FAST_MUTEX
-{
-    LONG Count;
-    PKTHREAD Owner;
-    ULONG Contention;
-    KEVENT Gate;
-    ULONG OldIrql;
-} FAST_MUTEX, *PFAST_MUTEX;
-
-typedef struct _EX_RUNDOWN_REF
-{
-    union
-    {
-        volatile ULONG_PTR Count;
-        volatile PVOID Ptr;
-    };
-} EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;
-
 #define ASSERT_GATE(object) \
     ASSERT((((object)->Header.Type & KOBJECT_TYPE_MASK) == GateObject) || \
           (((object)->Header.Type & KOBJECT_TYPE_MASK) == EventSynchronizationObject))
@@ -1697,27 +1606,6 @@ typedef struct _CM_FLOPPY_DEVICE_DATA {
   UCHAR  DataTransferRate;
 } CM_FLOPPY_DEVICE_DATA, *PCM_FLOPPY_DEVICE_DATA;
 
-typedef enum _INTERFACE_TYPE {
-  InterfaceTypeUndefined = -1,
-  Internal,
-  Isa,
-  Eisa,
-  MicroChannel,
-  TurboChannel,
-  PCIBus,
-  VMEBus,
-  NuBus,
-  PCMCIABus,
-  CBus,
-  MPIBus,
-  MPSABus,
-  ProcessorInternal,
-  InternalPowerBus,
-  PNPISABus,
-  PNPBus,
-  MaximumInterfaceType
-} INTERFACE_TYPE, *PINTERFACE_TYPE;
-
 typedef struct _PNP_BUS_INFORMATION {
   GUID  BusTypeGuid;
   INTERFACE_TYPE  LegacyBusType;
@@ -1725,80 +1613,6 @@ typedef struct _PNP_BUS_INFORMATION {
 } PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
 
 #include <pshpack1.h>
-typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {
-  UCHAR Type;
-  UCHAR ShareDisposition;
-  USHORT Flags;
-  union {
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length;
-    } Generic;
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length;
-    } Port;
-    struct {
-      ULONG Level;
-      ULONG Vector;
-      KAFFINITY Affinity;
-    } Interrupt;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    struct {
-      union {
-        struct {
-          USHORT Reserved;
-          USHORT MessageCount;
-          ULONG Vector;
-          KAFFINITY Affinity;
-        } Raw;
-        struct {
-          ULONG Level;
-          ULONG Vector;
-          KAFFINITY Affinity;
-        } Translated;
-      };
-    } MessageInterrupt;
-#endif
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length;
-    } Memory;
-    struct {
-      ULONG Channel;
-      ULONG Port;
-      ULONG Reserved1;
-    } Dma;
-    struct {
-      ULONG Data[3];
-    } DevicePrivate;
-    struct {
-      ULONG Start;
-      ULONG Length;
-      ULONG Reserved;
-    } BusNumber;
-    struct {
-      ULONG DataSize;
-      ULONG Reserved1;
-      ULONG Reserved2;
-    } DeviceSpecificData;
-#if (NTDDI_VERSION >= NTDDI_LONGHORN)
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length40;
-    } Memory40;
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length48;
-    } Memory48;
-    struct {
-      PHYSICAL_ADDRESS Start;
-      ULONG Length64;
-    } Memory64;
-#endif
-  } u;
-} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
-
 /* CM_PARTIAL_RESOURCE_DESCRIPTOR.Type */
 
 #define CmResourceTypeNull                0
@@ -1915,6 +1729,7 @@ typedef struct _CM_PNP_BIOS_INSTALLATION_CHECK
 
 #include <poppack.h>
 
+
 typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
 {
     ULONG BytesPerSector;
@@ -2040,80 +1855,6 @@ typedef enum _KINTERRUPT_POLARITY
     InterruptActiveLow
 } KINTERRUPT_POLARITY, *PKINTERRUPT_POLARITY;
 
-/* IO_RESOURCE_DESCRIPTOR.Option */
-
-#define IO_RESOURCE_PREFERRED             0x01
-#define IO_RESOURCE_DEFAULT               0x02
-#define IO_RESOURCE_ALTERNATIVE           0x08
-
-typedef struct _IO_RESOURCE_DESCRIPTOR {
-  UCHAR  Option;
-  UCHAR  Type;
-  UCHAR  ShareDisposition;
-  UCHAR  Spare1;
-  USHORT  Flags;
-  USHORT  Spare2;
-  union {
-    struct {
-      ULONG  Length;
-      ULONG  Alignment;
-      PHYSICAL_ADDRESS  MinimumAddress;
-      PHYSICAL_ADDRESS  MaximumAddress;
-    } Port;
-    struct {
-      ULONG  Length;
-      ULONG  Alignment;
-      PHYSICAL_ADDRESS  MinimumAddress;
-      PHYSICAL_ADDRESS  MaximumAddress;
-    } Memory;
-    struct {
-      ULONG  MinimumVector;
-      ULONG  MaximumVector;
-    } Interrupt;
-    struct {
-      ULONG  MinimumChannel;
-      ULONG  MaximumChannel;
-    } Dma;
-    struct {
-      ULONG  Length;
-      ULONG  Alignment;
-      PHYSICAL_ADDRESS  MinimumAddress;
-      PHYSICAL_ADDRESS  MaximumAddress;
-    } Generic;
-    struct {
-      ULONG  Data[3];
-    } DevicePrivate;
-    struct {
-      ULONG  Length;
-      ULONG  MinBusNumber;
-      ULONG  MaxBusNumber;
-      ULONG  Reserved;
-    } BusNumber;
-    struct {
-      ULONG  Priority;
-      ULONG  Reserved1;
-      ULONG  Reserved2;
-    } ConfigData;
-  } u;
-} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
-
-typedef struct _IO_RESOURCE_LIST {
-  USHORT  Version;
-  USHORT  Revision;
-  ULONG  Count;
-  IO_RESOURCE_DESCRIPTOR  Descriptors[1];
-} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
-
-typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {
-  ULONG  ListSize;
-  INTERFACE_TYPE  InterfaceType;
-  ULONG  BusNumber;
-  ULONG  SlotNumber;
-  ULONG  Reserved[3];
-  ULONG  AlternativeLists;
-  IO_RESOURCE_LIST  List[1];
-} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
-
 typedef struct _IO_ERROR_LOG_PACKET {
   UCHAR  MajorFunctionCode;
   UCHAR  RetryCount;
@@ -2387,17 +2128,6 @@ typedef struct _SCATTER_GATHER_LIST {
   SCATTER_GATHER_ELEMENT  Elements[1];
 } SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
 
-typedef struct _MDL {
-  struct _MDL  *Next;
-  CSHORT  Size;
-  CSHORT  MdlFlags;
-  struct _EPROCESS  *Process;
-  PVOID  MappedSystemVa;
-  PVOID  StartVa;
-  ULONG  ByteCount;
-  ULONG  ByteOffset;
-} MDL, *PMDL;
-
 #define MDL_MAPPED_TO_SYSTEM_VA     0x0001
 #define MDL_PAGES_LOCKED            0x0002
 #define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
@@ -3122,10 +2852,10 @@ typedef struct {
 } HAL_DISPATCH, *PHAL_DISPATCH;
 
 #if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTHAL_)
-extern DECLSPEC_IMPORT PHAL_DISPATCH HalDispatchTable;
+extern NTSYSAPI PHAL_DISPATCH HalDispatchTable;
 #define HALDISPATCH ((PHAL_DISPATCH)&HalDispatchTable)
 #else
-extern DECLSPEC_EXPORT HAL_DISPATCH HalDispatchTable;
+extern __declspec(dllexport) HAL_DISPATCH HalDispatchTable;
 #define HALDISPATCH (&HalDispatchTable)
 #endif
 
@@ -3147,14 +2877,6 @@ extern DECLSPEC_EXPORT HAL_DISPATCH HalDispatchTable;
 #define HalEndOfBoot                    HALDISPATCH->HalEndOfBoot
 #define HalMirrorVerify                 HALDISPATCH->HalMirrorVerify
 
-#ifndef _NTOSKRNL_
-#define HalDeviceControl                HALDISPATCH->HalDeviceControl
-#define HalIoAssignDriveLetters         HALDISPATCH->HalIoAssignDriveLetters
-#define HalIoReadPartitionTable         HALDISPATCH->HalIoReadPartitionTable
-#define HalIoSetPartitionInformation    HALDISPATCH->HalIoSetPartitionInformation
-#define HalIoWritePartitionTable        HALDISPATCH->HalIoWritePartitionTable
-#endif
-
 typedef enum _FILE_INFORMATION_CLASS {
   FileDirectoryInformation = 1,
   FileFullDirectoryInformation,
@@ -3288,17 +3010,6 @@ typedef struct _FILE_FULL_EA_INFORMATION {
   CHAR  EaName[1];
 } FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION;
 
-typedef ULONG_PTR ERESOURCE_THREAD;
-typedef ERESOURCE_THREAD *PERESOURCE_THREAD;
-
-typedef struct _OWNER_ENTRY {
-  ERESOURCE_THREAD  OwnerThread;
-  _ANONYMOUS_UNION union {
-      LONG  OwnerCount;
-      ULONG  TableSize;
-  } DUMMYUNIONNAME;
-} OWNER_ENTRY, *POWNER_ENTRY;
-
 /* ERESOURCE.Flag */
 
 #define ResourceNeverExclusive            0x0010
@@ -3307,27 +3018,6 @@ typedef struct _OWNER_ENTRY {
 
 #define RESOURCE_HASH_TABLE_SIZE          64
 
-typedef struct _ERESOURCE
-{
-    LIST_ENTRY SystemResourcesList;
-    POWNER_ENTRY OwnerTable;
-    SHORT ActiveCount;
-    USHORT Flag;
-    volatile PKSEMAPHORE SharedWaiters;
-    volatile PKEVENT ExclusiveWaiters;
-    OWNER_ENTRY OwnerEntry;
-    ULONG ActiveEntries;
-    ULONG ContentionCount;
-    ULONG NumberOfSharedWaiters;
-    ULONG NumberOfExclusiveWaiters;
-    union
-    {
-        PVOID Address;
-        ULONG_PTR CreatorBackTraceIndex;
-    };
-    KSPIN_LOCK SpinLock;
-} ERESOURCE, *PERESOURCE;
-
 typedef struct _DEVOBJ_EXTENSION
 {
     CSHORT Type;
@@ -4354,41 +4044,10 @@ typedef struct _PCI_SLOT_NUMBER {
   } u;
 } PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
 
-typedef enum _POOL_TYPE {
-  NonPagedPool,
-  PagedPool,
-  NonPagedPoolMustSucceed,
-  DontUseThisType,
-  NonPagedPoolCacheAligned,
-  PagedPoolCacheAligned,
-  NonPagedPoolCacheAlignedMustS,
-  MaxPoolType,
-  NonPagedPoolSession = 32,
-  PagedPoolSession,
-  NonPagedPoolMustSucceedSession,
-  DontUseThisTypeSession,
-  NonPagedPoolCacheAlignedSession,
-  PagedPoolCacheAlignedSession,
-  NonPagedPoolCacheAlignedMustSSession
-} POOL_TYPE;
-
 #define POOL_COLD_ALLOCATION                256
 #define POOL_QUOTA_FAIL_INSTEAD_OF_RAISE    8
 #define POOL_RAISE_IF_ALLOCATION_FAILURE    16
 
-
-typedef enum _EX_POOL_PRIORITY {
-  LowPoolPriority,
-  LowPoolPrioritySpecialPoolOverrun = 8,
-  LowPoolPrioritySpecialPoolUnderrun = 9,
-  NormalPoolPriority = 16,
-  NormalPoolPrioritySpecialPoolOverrun = 24,
-  NormalPoolPrioritySpecialPoolUnderrun = 25,
-  HighPoolPriority = 32,
-  HighPoolPrioritySpecialPoolOverrun = 40,
-  HighPoolPrioritySpecialPoolUnderrun = 41
-} EX_POOL_PRIORITY;
-
 typedef struct _OSVERSIONINFOA {
     ULONG dwOSVersionInfoSize;
     ULONG dwMajorVersion;
@@ -4491,18 +4150,6 @@ VerSetConditionMask(
 #define VER_CONDITION_MASK              7
 #define VER_NUM_BITS_PER_CONDITION_MASK 3
 
-typedef struct _RTL_BITMAP {
-  ULONG  SizeOfBitMap;
-  PULONG  Buffer;
-} RTL_BITMAP, *PRTL_BITMAP;
-
-#define RtlCheckBit(BMH,BP) (((((PLONG)(BMH)->Buffer)[(BP) / 32]) >> ((BP) % 32)) & 0x1)
-
-typedef struct _RTL_BITMAP_RUN {
-    ULONG  StartingIndex;
-    ULONG  NumberOfBits;
-} RTL_BITMAP_RUN, *PRTL_BITMAP_RUN;
-
 struct _RTL_RANGE;
 
 typedef BOOLEAN
@@ -4511,108 +4158,6 @@ typedef BOOLEAN
     struct _RTL_RANGE *Range
 );
 
-typedef NTSTATUS
-(DDKAPI *PRTL_QUERY_REGISTRY_ROUTINE)(
-  IN PWSTR  ValueName,
-  IN ULONG  ValueType,
-  IN PVOID  ValueData,
-  IN ULONG  ValueLength,
-  IN PVOID  Context,
-  IN PVOID  EntryContext);
-
-#define RTL_REGISTRY_ABSOLUTE             0
-#define RTL_REGISTRY_SERVICES             1
-#define RTL_REGISTRY_CONTROL              2
-#define RTL_REGISTRY_WINDOWS_NT           3
-#define RTL_REGISTRY_DEVICEMAP            4
-#define RTL_REGISTRY_USER                 5
-#define RTL_REGISTRY_HANDLE               0x40000000
-#define RTL_REGISTRY_OPTIONAL             0x80000000
-
-/* RTL_QUERY_REGISTRY_TABLE.Flags */
-#define RTL_QUERY_REGISTRY_SUBKEY         0x00000001
-#define RTL_QUERY_REGISTRY_TOPKEY         0x00000002
-#define RTL_QUERY_REGISTRY_REQUIRED       0x00000004
-#define RTL_QUERY_REGISTRY_NOVALUE        0x00000008
-#define RTL_QUERY_REGISTRY_NOEXPAND       0x00000010
-#define RTL_QUERY_REGISTRY_DIRECT         0x00000020
-#define RTL_QUERY_REGISTRY_DELETE         0x00000040
-
-typedef struct _RTL_QUERY_REGISTRY_TABLE {
-  PRTL_QUERY_REGISTRY_ROUTINE  QueryRoutine;
-  ULONG  Flags;
-  PWSTR  Name;
-  PVOID  EntryContext;
-  ULONG  DefaultType;
-  PVOID  DefaultData;
-  ULONG  DefaultLength;
-} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
-
-typedef struct _TIME_FIELDS {
-  CSHORT  Year;
-  CSHORT  Month;
-  CSHORT  Day;
-  CSHORT  Hour;
-  CSHORT  Minute;
-  CSHORT  Second;
-  CSHORT  Milliseconds;
-  CSHORT  Weekday;
-} TIME_FIELDS, *PTIME_FIELDS;
-
-typedef PVOID
-(DDKAPI *PALLOCATE_FUNCTION)(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes,
-  IN ULONG  Tag);
-
-typedef VOID
-(DDKAPI *PFREE_FUNCTION)(
-  IN PVOID  Buffer);
-
-typedef struct _GENERAL_LOOKASIDE {
-  SLIST_HEADER  ListHead;
-  USHORT  Depth;
-  USHORT  MaximumDepth;
-  ULONG  TotalAllocates;
-  union {
-    ULONG  AllocateMisses;
-    ULONG  AllocateHits;
-  };
-  ULONG  TotalFrees;
-  union {
-    ULONG  FreeMisses;
-    ULONG  FreeHits;
-  };
-  POOL_TYPE  Type;
-  ULONG  Tag;
-  ULONG  Size;
-  PALLOCATE_FUNCTION  Allocate;
-  PFREE_FUNCTION  Free;
-  LIST_ENTRY  ListEntry;
-  ULONG  LastTotalAllocates;
-  union {
-    ULONG  LastAllocateMisses;
-    ULONG  LastAllocateHits;
-  };
-  ULONG Future[2];
-} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
-
-typedef struct _NPAGED_LOOKASIDE_LIST {
-  GENERAL_LOOKASIDE  L;
-  KSPIN_LOCK  Obsoleted;
-} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
-
-typedef struct _PAGED_LOOKASIDE_LIST {
-  GENERAL_LOOKASIDE  L;
-  FAST_MUTEX  Obsoleted;
-} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
-
-typedef VOID
-(DDKAPI *PCALLBACK_FUNCTION)(
-  IN PVOID  CallbackContext,
-  IN PVOID  Argument1,
-  IN PVOID  Argument2);
-
 typedef enum _EVENT_TYPE {
   NotificationEvent,
   SynchronizationEvent
@@ -4690,7 +4235,7 @@ typedef struct _IO_REMOVE_LOCK_DBG_BLOCK {
 
 typedef struct _IO_REMOVE_LOCK {
   IO_REMOVE_LOCK_COMMON_BLOCK  Common;
-#ifdef DBG
+#if DBG
   IO_REMOVE_LOCK_DBG_BLOCK  Dbg;
 #endif
 } IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
@@ -4844,23 +4389,6 @@ typedef enum _IO_QUERY_DEVICE_DATA_FORMAT {
   IoQueryDeviceMaxData
 } IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT;
 
-typedef enum _WORK_QUEUE_TYPE {
-  CriticalWorkQueue,
-  DelayedWorkQueue,
-  HyperCriticalWorkQueue,
-  MaximumWorkQueue
-} WORK_QUEUE_TYPE;
-
-typedef VOID
-(DDKAPI *PWORKER_THREAD_ROUTINE)(
-  IN PVOID Parameter);
-
-typedef struct _WORK_QUEUE_ITEM {
-  LIST_ENTRY  List;
-  PWORKER_THREAD_ROUTINE  WorkerRoutine;
-  volatile PVOID  Parameter;
-} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
-
 typedef enum _KBUGCHECK_CALLBACK_REASON {
   KbCallbackInvalid,
   KbCallbackReserved1,
@@ -5012,6 +4540,25 @@ typedef VOID
   IN HANDLE  ProcessId,
   IN PIMAGE_INFO  ImageInfo);
 
+#pragma pack(push,4)
+typedef enum _BUS_DATA_TYPE {
+    ConfigurationSpaceUndefined = -1,
+    Cmos,
+    EisaConfiguration,
+    Pos,
+    CbusConfiguration,
+    PCIConfiguration,
+    VMEConfiguration,
+    NuBusConfiguration,
+    PCMCIAConfiguration,
+    MPIConfiguration,
+    MPSAConfiguration,
+    PNPISAConfiguration,
+    SgiInternalConfiguration,
+    MaximumBusDataType
+} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
+#pragma pack(pop)
+
 typedef struct _NT_TIB {
     struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
     PVOID StackBase;
@@ -5393,7 +4940,7 @@ typedef struct _PHYSICAL_MEMORY_RANGE {
 } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
 
 typedef ULONG_PTR
-(*PDRIVER_VERIFIER_THUNK_ROUTINE)(
+(NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)(
   IN PVOID  Context);
 
 typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
@@ -5411,21 +4958,6 @@ typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
 #define HASH_STRING_ALGORITHM_X65599      1
 #define HASH_STRING_ALGORITHM_INVALID     0xffffffff
 
-typedef enum _SUITE_TYPE {
-  SmallBusiness,
-  Enterprise,
-  BackOffice,
-  CommunicationServer,
-  TerminalServer,
-  SmallBusinessRestricted,
-  EmbeddedNT,
-  DataCenter,
-  SingleUserTS,
-  Personal,
-  Blade,
-  MaxSuiteType
-} SUITE_TYPE;
-
 typedef VOID
 (DDKAPI *PTIMER_APC_ROUTINE)(
   IN PVOID  TimerContext,
@@ -5505,7 +5037,7 @@ typedef struct _CONTEXT {
 } CONTEXT;
 
 //
-// Types to use to contain PFNs and their counts.
+// Used to contain PFNs and PFN counts
 //
 typedef ULONG PFN_COUNT;
 typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
@@ -5574,9 +5106,8 @@ typedef struct _KFLOATING_SAVE {
   ULONG  Spare1;
 } KFLOATING_SAVE, *PKFLOATING_SAVE;
 
-static __inline
+FORCEINLINE
 ULONG
-DDKAPI
 KeGetCurrentProcessorNumber(VOID)
 {
 #if defined(__GNUC__)
@@ -5591,7 +5122,7 @@ KeGetCurrentProcessorNumber(VOID)
 #if _MSC_FULL_VER >= 13012035
   return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number));
 #else
-  __asm { movzx eax, _PCR KPCR.Number }
+  __asm { movzx eax, fs:[0] KPCR.Number }
 #endif
 #else
 #error Unknown compiler
@@ -5629,7 +5160,7 @@ extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
 
 #define MM_KSEG0_BASE       MM_SYSTEM_RANGE_START
 #define MM_SYSTEM_SPACE_END 0xFFFFFFFF
-
+    
 #elif defined(__x86_64__)
 
 #define CONTEXT_AMD64 0x100000
@@ -5761,7 +5292,7 @@ typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
 } CONTEXT;
 
 //
-// Types to use to contain PFNs and their counts.
+// Used to contain PFNs and PFN counts
 //
 typedef ULONG PFN_COUNT;
 typedef ULONG64 PFN_NUMBER, *PPFN_NUMBER;
@@ -5888,7 +5419,7 @@ KeGetCurrentProcessorNumber(VOID)
 #elif defined(__PowerPC__)
 
 //
-// Types to use to contain PFNs and their counts.
+// Used to contain PFNs and PFN counts
 //
 typedef ULONG PFN_COUNT;
 typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
@@ -5966,7 +5497,7 @@ KeGetCurrentProcessorNumber(VOID)
 #error MIPS Headers are totally incorrect
 
 //
-// Types to use to contain PFNs and their counts.
+// Used to contain PFNs and PFN counts
 //
 typedef ULONG PFN_COUNT;
 typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
@@ -6010,6 +5541,10 @@ KeGetCurrentProcessorNumber(VOID)
 #error Unknown architecture
 #endif
 
+#define MM_DONT_ZERO_ALLOCATION             0x00000001
+#define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY    0x00000002
+
+    
 #define EFLAG_SIGN                        0x8000
 #define EFLAG_ZERO                        0x4000
 #define EFLAG_SELECT                      (EFLAG_SIGN | EFLAG_ZERO)
@@ -6050,7 +5585,7 @@ typedef VOID
     IN ULONG Length
 );
 
-#define PCI_DATA_TAG TAG('P', 'C', 'I', ' ')
+#define PCI_DATA_TAG ' ICP'
 #define PCI_DATA_VERSION 1
 
 typedef struct _PCIBUSDATA
@@ -6066,130 +5601,6 @@ typedef struct _PCIBUSDATA
 } PCIBUSDATA, *PPCIBUSDATA;
 
 
-/** INTERLOCKED FUNCTIONS *****************************************************/
-
-#if !defined(__INTERLOCKED_DECLARED)
-#define __INTERLOCKED_DECLARED
-
-#if defined (_X86_)
-#if defined(NO_INTERLOCKED_INTRINSICS)
-NTKERNELAPI
-LONG
-FASTCALL
-InterlockedIncrement(
-  IN OUT LONG volatile *Addend);
-
-NTKERNELAPI
-LONG
-FASTCALL
-InterlockedDecrement(
-  IN OUT LONG volatile *Addend);
-
-NTKERNELAPI
-LONG
-FASTCALL
-InterlockedCompareExchange(
-  IN OUT LONG volatile *Destination,
-  IN LONG  Exchange,
-  IN LONG  Comparand);
-
-NTKERNELAPI
-LONG
-FASTCALL
-InterlockedExchange(
-  IN OUT LONG volatile *Destination,
-  IN LONG Value);
-
-NTKERNELAPI
-LONG
-FASTCALL
-InterlockedExchangeAdd(
-  IN OUT LONG volatile *Addend,
-  IN LONG  Value);
-
-#else // !defined(NO_INTERLOCKED_INTRINSICS)
-
-#define InterlockedExchange _InterlockedExchange
-#define InterlockedIncrement _InterlockedIncrement
-#define InterlockedDecrement _InterlockedDecrement
-#define InterlockedExchangeAdd _InterlockedExchangeAdd
-#define InterlockedCompareExchange _InterlockedCompareExchange
-#define InterlockedOr _InterlockedOr
-#define InterlockedAnd _InterlockedAnd
-#define InterlockedXor _InterlockedXor
-
-#endif // !defined(NO_INTERLOCKED_INTRINSICS)
-
-#endif // defined (_X86_)
-
-#if !defined (_WIN64)
-/*
- * PVOID
- * InterlockedExchangePointer(
- *   IN OUT PVOID VOLATILE  *Target,
- *   IN PVOID  Value)
- */
-#define InterlockedExchangePointer(Target, Value) \
-  ((PVOID) InterlockedExchange((PLONG) Target, (LONG) Value))
-
-/*
- * PVOID
- * InterlockedCompareExchangePointer(
- *   IN OUT PVOID  *Destination,
- *   IN PVOID  Exchange,
- *   IN PVOID  Comparand)
- */
-#define InterlockedCompareExchangePointer(Destination, Exchange, Comparand) \
-  ((PVOID) InterlockedCompareExchange((PLONG) Destination, (LONG) Exchange, (LONG) Comparand))
-
-#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b)
-#define InterlockedIncrementSizeT(a) InterlockedIncrement((LONG *)a)
-#define InterlockedDecrementSizeT(a) InterlockedDecrement((LONG *)a)
-
-#endif // !defined (_WIN64)
-
-#if defined (_M_AMD64)
-
-#define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONGLONG *)a, (LONGLONG)b)
-#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONGLONG *)a)
-#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONGLONG *)a)
-#define InterlockedAnd _InterlockedAnd
-#define InterlockedOr _InterlockedOr
-#define InterlockedXor _InterlockedXor
-#define InterlockedIncrement _InterlockedIncrement
-#define InterlockedDecrement _InterlockedDecrement
-#define InterlockedAdd _InterlockedAdd
-#define InterlockedExchange _InterlockedExchange
-#define InterlockedExchangeAdd _InterlockedExchangeAdd
-#define InterlockedCompareExchange _InterlockedCompareExchange
-#define InterlockedAnd64 _InterlockedAnd64
-#define InterlockedOr64 _InterlockedOr64
-#define InterlockedXor64 _InterlockedXor64
-#define InterlockedIncrement64 _InterlockedIncrement64
-#define InterlockedDecrement64 _InterlockedDecrement64
-#define InterlockedAdd64 _InterlockedAdd64
-#define InterlockedExchange64 _InterlockedExchange64
-#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
-#define InterlockedCompareExchange64 _InterlockedCompareExchange64
-#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
-#define InterlockedExchangePointer _InterlockedExchangePointer
-
-//#define ExInterlockedPopEntrySList(Head, Lock) ExpInterlockedPopEntrySList(Head)
-//#define ExInterlockedPushEntrySList(Head, Entry, Lock) ExpInterlockedPushEntrySList(Head, Entry)
-//#define ExInterlockedFlushSList(Head) ExpInterlockedFlushSList(Head)
-
-#if !defined(_WINBASE_)
-#define InterlockedPopEntrySList(Head) ExpInterlockedPopEntrySList(Head)
-#define InterlockedPushEntrySList(Head, Entry) ExpInterlockedPushEntrySList(Head, Entry)
-//#define InterlockedFlushSList(Head) ExpInterlockedFlushSList(Head)
-//#define QueryDepthSList(Head) ExQueryDepthSList(Head)
-#endif // !defined(_WINBASE_)
-
-#endif // _M_AMD64
-
-#endif /* !__INTERLOCKED_DECLARED */
-
-
 /** SPINLOCK FUNCTIONS ********************************************************/
 
 NTKERNELAPI
@@ -6199,13 +5610,35 @@ KeTryToAcquireSpinLockAtDpcLevel(
     IN OUT PKSPIN_LOCK SpinLock
 );
 
+NTKERNELAPI
+BOOLEAN
+FASTCALL
+KeTestSpinLock(
+    IN PKSPIN_LOCK SpinLock
+);
+
 #if defined (_X86_)
 
+#if defined(WIN9X_COMPAT_SPINLOCK)
+
 NTKERNELAPI
 VOID
 NTAPI
 KeInitializeSpinLock(
-  IN PKSPIN_LOCK  SpinLock);
+    IN PKSPIN_LOCK SpinLock
+);
+
+#else
+
+FORCEINLINE
+VOID
+KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
+{
+    /* Clear the lock */
+    *SpinLock = 0;
+}
+
+#endif
 
 NTHALAPI
 KIRQL
@@ -6237,8 +5670,58 @@ KefReleaseSpinLockFromDpcLevel(
 #define KeAcquireSpinLock(a,b)  *(b) = KfAcquireSpinLock(a)
 #define KeReleaseSpinLock(a,b)  KfReleaseSpinLock(a,b)
 
-#else // !defined (_X86_)
-
+#define KeGetDcacheFillSize() 1L
+    
+#elif defined(_M_ARM) // !defined (_X86_)
+    
+    FORCEINLINE
+    VOID
+    KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
+    {
+        /* Clear the lock */
+        *SpinLock = 0;
+    }
+    
+    NTHALAPI
+    KIRQL
+    FASTCALL
+    KfAcquireSpinLock(
+                      IN PKSPIN_LOCK SpinLock);
+    
+    NTHALAPI
+    VOID
+    FASTCALL
+    KfReleaseSpinLock(
+                      IN PKSPIN_LOCK SpinLock,
+                      IN KIRQL NewIrql);
+    
+    
+    NTKERNELAPI
+    VOID
+    FASTCALL
+    KefAcquireSpinLockAtDpcLevel(
+                                 IN PKSPIN_LOCK  SpinLock);
+    
+    NTKERNELAPI
+    VOID
+    FASTCALL
+    KefReleaseSpinLockFromDpcLevel(
+                                   IN PKSPIN_LOCK  SpinLock);
+    
+    
+#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
+#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
+#define KeAcquireSpinLock(a,b)  *(b) = KfAcquireSpinLock(a)
+#define KeReleaseSpinLock(a,b)  KfReleaseSpinLock(a,b)
+    
+    NTKERNELAPI
+    VOID
+    NTAPI
+    KeInitializeSpinLock(
+                         IN PKSPIN_LOCK  SpinLock);
+    
+#else
+    
 FORCEINLINE
 VOID
 NTAPI
@@ -6271,15 +5754,9 @@ KeAcquireSpinLockRaiseToDpc(
 
 #define KeAcquireSpinLock(SpinLock, OldIrql) \
   *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock)
-
+    
 #endif // !defined (_X86_)
 
-#define RtlCopyMemoryNonTemporal RtlCopyMemory
-
-#define KeGetDcacheFillSize() 1L
-
-
-
 /*
 ** Utillity functions
 */
@@ -6319,27 +5796,37 @@ KeAcquireSpinLockRaiseToDpc(
 #define ROUND_TO_PAGES(Size) \
   ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
 
-NTSYSAPI
-VOID
-NTAPI
-RtlAssert(
-  IN PVOID  FailedAssertion,
-  IN PVOID  FileName,
-  IN ULONG  LineNumber,
-  IN PCHAR  Message);
 
-#ifdef DBG
+
+#if defined(_X86_) || defined(_AMD64_)
+
+//
+// x86 and x64 performs a 0x2C interrupt
+//
+#define DbgRaiseAssertionFailure __int2c
+
+#elif defined(_ARM_)
+
+//
+// TODO
+//
+
+#else
+#error Unsupported Architecture
+#endif
+
+#if DBG
 
 #define ASSERT(exp) \
   (VOID)((!(exp)) ? \
-    RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE : TRUE)
+    RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
 
 #define ASSERTMSG(msg, exp) \
   (VOID)((!(exp)) ? \
     RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE : TRUE)
 
 #define RTL_SOFT_ASSERT(exp) \
-  (VOID)((!(_exp)) ? \
+  (VOID)((!(exp)) ? \
     DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
 
 #define RTL_SOFT_ASSERTMSG(msg, exp) \
@@ -6352,6 +5839,36 @@ RtlAssert(
 #define RTL_SOFT_VERIFY(exp) RTL_SOFT_ASSERT(exp)
 #define RTL_SOFT_VERIFYMSG(msg, exp) RTL_SOFT_ASSERTMSG(msg, exp)
 
+#if defined(_MSC_VER)
+
+#define NT_ASSERT(exp) \
+   ((!(exp)) ? \
+      (__annotation(L"Debug", L"AssertFail", L#exp), \
+       DbgRaiseAssertionFailure(), FALSE) : TRUE)
+
+#define NT_ASSERTMSG(msg, exp) \
+   ((!(exp)) ? \
+      (__annotation(L"Debug", L"AssertFail", L##msg), \
+      DbgRaiseAssertionFailure(), FALSE) : TRUE)
+
+#define NT_ASSERTMSGW(msg, exp) \
+    ((!(exp)) ? \
+        (__annotation(L"Debug", L"AssertFail", msg), \
+         DbgRaiseAssertionFailure(), FALSE) : TRUE)
+
+#else
+
+//
+// GCC doesn't support __annotation (nor PDB)
+//
+#define NT_ASSERT(exp) \
+   (VOID)((!(exp)) ? (DbgRaiseAssertionFailure(), FALSE) : TRUE)
+
+#define NT_ASSERTMSG NT_ASSERT
+#define NT_ASSERTMSGW NT_ASSERT
+
+#endif
+
 #else /* !DBG */
 
 #define ASSERT(exp) ((VOID) 0)
@@ -6366,6 +5883,10 @@ RtlAssert(
 #define RTL_SOFT_VERIFY(exp) ((exp) ? TRUE : FALSE)
 #define RTL_SOFT_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
 
+#define NT_ASSERT(exp)     ((VOID)0)
+#define NT_ASSERTMSG(exp)  ((VOID)0)
+#define NT_ASSERTMSGW(exp) ((VOID)0)
+
 #endif /* DBG */
 
 /* HACK HACK HACK - GCC (or perhaps LD) is messing this up */
@@ -6462,7 +5983,7 @@ RemoveEntryList(
   OldBlink = Entry->Blink;
   OldFlink->Blink = OldBlink;
   OldBlink->Flink = OldFlink;
-  return (OldFlink == OldBlink);
+  return (BOOLEAN)(OldFlink == OldBlink);
 }
 
 static __inline PLIST_ENTRY
@@ -6493,135 +6014,13 @@ RemoveTailList(
   return Entry;
 }
 
-#if !defined(_WINBASE_) || _WIN32_WINNT < 0x0501
-
-NTKERNELAPI
-PSLIST_ENTRY
-FASTCALL
-InterlockedPopEntrySList(
-  IN PSLIST_HEADER  ListHead);
-
-NTKERNELAPI
-PSLIST_ENTRY
-FASTCALL
-InterlockedPushEntrySList(
-  IN PSLIST_HEADER  ListHead,
-  IN PSLIST_ENTRY  ListEntry);
-
-#endif
-
-/*
- * USHORT
- * QueryDepthSList(
- *   IN PSLIST_HEADER  SListHead)
- */
-#define QueryDepthSList(_SListHead) \
-  ((USHORT) ((_SListHead)->Alignment & 0xffff))
-
-#define InterlockedFlushSList(ListHead) ExInterlockedFlushSList(ListHead)
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlxAnsiStringToUnicodeSize(
-  IN PCANSI_STRING  AnsiString);
-
-#define RtlAnsiStringToUnicodeSize(STRING) (               \
-  NLS_MB_CODE_PAGE_TAG ?                                   \
-  RtlxAnsiStringToUnicodeSize(STRING) :                    \
-  ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR)   \
-)
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlAnsiStringToUnicodeString(
-  IN OUT PUNICODE_STRING  DestinationString,
-  IN PANSI_STRING  SourceString,
-  IN BOOLEAN  AllocateDestinationString);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlAppendUnicodeStringToString(
-  IN OUT PUNICODE_STRING  Destination,
-  IN PCUNICODE_STRING  Source);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlAppendUnicodeToString(
-  IN OUT PUNICODE_STRING  Destination,
-  IN PCWSTR  Source);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlAreBitsClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  StartingIndex,
-  IN ULONG  Length);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlAreBitsSet(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  StartingIndex,
-  IN ULONG  Length);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlCharToInteger(
-  IN PCSZ  String,
-  IN ULONG  Base  OPTIONAL,
-  IN OUT PULONG  Value);
-
-#if 0
-NTSYSAPI
-ULONG
-NTAPI
-RtlCheckBit(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  BitPosition);
-#endif
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlCheckRegistryKey(
-  IN ULONG  RelativeTo,
-  IN PWSTR  Path);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlClearAllBits(
-  IN PRTL_BITMAP  BitMapHeader);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlClearBit(
-  PRTL_BITMAP  BitMapHeader,
-  ULONG  BitNumber);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlClearBits(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  StartingIndex,
-  IN ULONG  NumberToClear);
-
-NTSYSAPI
-SIZE_T
-NTAPI
-RtlCompareMemory(
-  IN CONST VOID  *Source1,
-  IN CONST VOID  *Source2,
-  IN SIZE_T  Length);
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlCharToInteger(
+  IN PCSZ  String,
+  IN ULONG  Base  OPTIONAL,
+  IN OUT PULONG  Value);
 
 NTSYSAPI
 LONG
@@ -6631,95 +6030,39 @@ RtlCompareString(
   IN PSTRING  String2,
   BOOLEAN  CaseInSensitive);
 
-NTSYSAPI
-LONG
-NTAPI
-RtlCompareUnicodeString(
-  IN PCUNICODE_STRING  String1,
-  IN PCUNICODE_STRING  String2,
-  IN BOOLEAN  CaseInSensitive);
-
-static __inline
-LARGE_INTEGER
-NTAPI_INLINE
-RtlConvertLongToLargeInteger(LONG SignedInteger)
-{
-    LARGE_INTEGER Result;
-
-    Result.QuadPart = SignedInteger;
-    return Result;
-}
-
-static __inline
-LARGE_INTEGER
-NTAPI_INLINE
-RtlConvertUlongToLargeInteger(
-  ULONG UnsignedInteger)
-{
-    LARGE_INTEGER ret;
-    ret.QuadPart = UnsignedInteger;
-    return ret;
-}
+#if !defined(MIDL_PASS)
 
-NTSYSAPI
+FORCEINLINE
 LUID
 NTAPI
 RtlConvertLongToLuid(
-  IN LONG  Long);
+    IN LONG Val)
+{
+    LUID Luid;
+    LARGE_INTEGER Temp;
 
+    Temp.QuadPart = Val;
+    Luid.LowPart = Temp.u.LowPart;
+    Luid.HighPart = Temp.u.HighPart;
 
-NTSYSAPI
+    return Luid;
+}
+
+FORCEINLINE
 LUID
 NTAPI
 RtlConvertUlongToLuid(
-  ULONG  Ulong);
-
-#ifdef _M_AMD64
-
-static __inline
-LARGE_INTEGER
-NTAPI_INLINE
-RtlExtendedIntegerMultiply(
-  LARGE_INTEGER Multiplicand,
-  LONG Multiplier)
-{
-    LARGE_INTEGER ret;
-    ret.QuadPart = Multiplicand.QuadPart * Multiplier;
-    return ret;
-}
-
-static __inline
-LARGE_INTEGER
-NTAPI_INLINE
-RtlExtendedLargeIntegerDivide(
-  LARGE_INTEGER Dividend,
-  ULONG Divisor,
-  PULONG Remainder)
+    IN ULONG Val)
 {
-    LARGE_INTEGER ret;
-    ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor;
-    if (Remainder)
-        *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
-    return ret;
-}
+    LUID Luid;
 
-#endif
+    Luid.LowPart = Val;
+    Luid.HighPart = 0;
 
-/*
- * VOID
- * RtlCopyMemory(
- *   IN VOID UNALIGNED  *Destination,
- *   IN CONST VOID UNALIGNED  *Source,
- *   IN SIZE_T  Length)
- */
-#ifndef RtlCopyMemory
-#define RtlCopyMemory(Destination, Source, Length) \
-  memcpy(Destination, Source, Length)
+    return Luid;
+}
 #endif
 
-#ifndef RtlCopyBytes
-#define RtlCopyBytes RtlCopyMemory
-#endif
 
 NTSYSAPI
 VOID
@@ -6736,54 +6079,6 @@ RtlCopyString(
   IN OUT PSTRING  DestinationString,
   IN PSTRING  SourceString  OPTIONAL);
 
-NTSYSAPI
-VOID
-NTAPI
-RtlCopyUnicodeString(
-  IN OUT PUNICODE_STRING  DestinationString,
-  IN PCUNICODE_STRING  SourceString);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlCreateRegistryKey(
-  IN ULONG  RelativeTo,
-  IN PWSTR  Path);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlCreateSecurityDescriptor(
-  IN OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
-  IN ULONG  Revision);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlDeleteRegistryValue(
-  IN ULONG  RelativeTo,
-  IN PCWSTR  Path,
-  IN PCWSTR  ValueName);
-
-/*
- * BOOLEAN
- * RtlEqualLuid(
- *   IN PLUID  Luid1,
- *   IN PLUID  Luid2)
- */
-#define RtlEqualLuid(Luid1, \
-                     Luid2) \
-  (((Luid1)->LowPart == (Luid2)->LowPart) && ((Luid1)->HighPart == (Luid2)->HighPart))
-
-/*
- * ULONG
- * RtlEqualMemory(
- *   IN VOID UNALIGNED  *Destination,
- *   IN CONST VOID UNALIGNED  *Source,
- *   IN SIZE_T  Length)
- */
-#define RtlEqualMemory(Destination, Source, Length) (!memcmp(Destination, Source, Length))
-
 NTSYSAPI
 BOOLEAN
 NTAPI
@@ -6792,125 +6087,6 @@ RtlEqualString(
   IN PSTRING  String2,
   IN BOOLEAN  CaseInSensitive);
 
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlEqualUnicodeString(
-  IN CONST UNICODE_STRING  *String1,
-  IN CONST UNICODE_STRING  *String2,
-  IN BOOLEAN  CaseInSensitive);
-
-/*
- * VOID
- * RtlFillMemory(
- *   IN VOID UNALIGNED  *Destination,
- *   IN SIZE_T  Length,
- *   IN UCHAR  Fill)
- */
-#ifndef RtlFillMemory
-#define RtlFillMemory(Destination, Length, Fill) \
-  memset(Destination, Fill, Length)
-#endif
-
-#ifndef RtlFillBytes
-#define RtlFillBytes RtlFillMemory
-#endif
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindClearBits(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  NumberToFind,
-  IN ULONG  HintIndex);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindClearBitsAndSet(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  NumberToFind,
-  IN ULONG  HintIndex);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindClearRuns(
-  IN PRTL_BITMAP  BitMapHeader,
-  OUT PRTL_BITMAP_RUN  RunArray,
-  IN ULONG  SizeOfRunArray,
-  IN BOOLEAN  LocateLongestRuns);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindFirstRunClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  OUT PULONG  StartingIndex);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindLastBackwardRunClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  FromIndex,
-  OUT PULONG  StartingRunIndex);
-
-NTSYSAPI
-CCHAR
-NTAPI
-RtlFindLeastSignificantBit(
-  IN ULONGLONG  Set);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindLongestRunClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  OUT PULONG  StartingIndex);
-
-NTSYSAPI
-CCHAR
-NTAPI
-RtlFindMostSignificantBit(
-  IN ULONGLONG  Set);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindNextForwardRunClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  FromIndex,
-  OUT PULONG  StartingRunIndex);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindSetBits(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  NumberToFind,
-  IN ULONG  HintIndex);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlFindSetBitsAndClear(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  NumberToFind,
-  IN ULONG  HintIndex);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlFreeAnsiString(
-  IN PANSI_STRING  AnsiString);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlFreeUnicodeString(
-  IN PUNICODE_STRING  UnicodeString);
-
 #if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
 #define RtlGetCallersAddress(CallersAddress, CallersCaller) \
     *CallersAddress = (PVOID)_ReturnAddress(); \
@@ -6931,397 +6107,63 @@ RtlGetVersion(
   IN OUT PRTL_OSVERSIONINFOW  lpVersionInformation);
 
 NTSYSAPI
-NTSTATUS
+VOID
 NTAPI
-RtlGUIDFromString(
-  IN PUNICODE_STRING  GuidString,
-  OUT GUID  *Guid);
+RtlMapGenericMask(
+  IN OUT PACCESS_MASK  AccessMask,
+  IN PGENERIC_MAPPING  GenericMapping);
 
 NTSYSAPI
-NTSTATUS
+BOOLEAN
 NTAPI
-RtlHashUnicodeString(
-  IN CONST UNICODE_STRING  *String,
-  IN BOOLEAN  CaseInSensitive,
-  IN ULONG  HashAlgorithm,
-  OUT PULONG  HashValue);
+RtlPrefixUnicodeString(
+  IN PCUNICODE_STRING  String1,
+  IN PCUNICODE_STRING  String2,
+  IN BOOLEAN  CaseInSensitive);
 
 NTSYSAPI
-VOID
+NTSTATUS
 NTAPI
-RtlInitAnsiString(
-  IN OUT PANSI_STRING  DestinationString,
-  IN PCSZ  SourceString);
+RtlUpcaseUnicodeString(
+  IN OUT PUNICODE_STRING  DestinationString  OPTIONAL,
+  IN PCUNICODE_STRING  SourceString,
+  IN BOOLEAN  AllocateDestinationString);
 
 NTSYSAPI
-VOID
+CHAR
 NTAPI
-RtlInitializeBitMap(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN PULONG  BitMapBuffer,
-  IN ULONG  SizeOfBitMap);
+RtlUpperChar(
+  IN CHAR Character);
 
 NTSYSAPI
 VOID
 NTAPI
-RtlInitString(
+RtlUpperString(
   IN OUT PSTRING  DestinationString,
-  IN PCSZ  SourceString);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlInitUnicodeString(
-  IN OUT PUNICODE_STRING  DestinationString,
-  IN PCWSTR  SourceString);
+  IN PSTRING  SourceString);
 
 NTSYSAPI
 NTSTATUS
 NTAPI
-RtlInt64ToUnicodeString(
-  IN ULONGLONG  Value,
-  IN ULONG  Base OPTIONAL,
-  IN OUT PUNICODE_STRING  String);
+RtlVerifyVersionInfo(
+  IN PRTL_OSVERSIONINFOEXW  VersionInfo,
+  IN ULONG  TypeMask,
+  IN ULONGLONG  ConditionMask);
 
 NTSYSAPI
 NTSTATUS
 NTAPI
-RtlIntegerToUnicodeString(
-  IN ULONG  Value,
-  IN ULONG  Base  OPTIONAL,
-  IN OUT PUNICODE_STRING  String);
+RtlVolumeDeviceToDosName(
+  IN PVOID  VolumeDeviceObject,
+  OUT PUNICODE_STRING  DosName);
 
 NTSYSAPI
-NTSTATUS
+ULONG
 NTAPI
-RtlIntPtrToUnicodeString(
-  PLONG  Value,
-  ULONG  Base  OPTIONAL,
-  PUNICODE_STRING  String);
-
-/*
- * BOOLEAN
- * RtlIsZeroLuid(
- *   IN PLUID  L1)
- */
-#define RtlIsZeroLuid(_L1) \
-  ((BOOLEAN) ((!(_L1)->LowPart) && (!(_L1)->HighPart)))
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlLengthSecurityDescriptor(
-  IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlMapGenericMask(
-  IN OUT PACCESS_MASK  AccessMask,
-  IN PGENERIC_MAPPING  GenericMapping);
-
-/*
- * VOID
- * RtlMoveMemory(
- *  IN VOID UNALIGNED  *Destination,
- *  IN CONST VOID UNALIGNED  *Source,
- *  IN SIZE_T  Length)
- */
-#define RtlMoveMemory memmove
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlNumberOfClearBits(
-  IN PRTL_BITMAP  BitMapHeader);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlNumberOfSetBits(
-  IN PRTL_BITMAP  BitMapHeader);
-
-NTSYSAPI
-VOID
-FASTCALL
-RtlPrefetchMemoryNonTemporal(
-  IN PVOID  Source,
-  IN SIZE_T  Length);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlPrefixUnicodeString(
-  IN PCUNICODE_STRING  String1,
-  IN PCUNICODE_STRING  String2,
-  IN BOOLEAN  CaseInSensitive);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlQueryRegistryValues(
-  IN ULONG  RelativeTo,
-  IN PCWSTR  Path,
-  IN PRTL_QUERY_REGISTRY_TABLE  QueryTable,
-  IN PVOID  Context,
-  IN PVOID  Environment  OPTIONAL);
-
-
-#define LONG_SIZE (sizeof(LONG))
-#define LONG_MASK (LONG_SIZE - 1)
-
-/*
- * VOID
- * RtlRetrieveUlong (
- *     PULONG  DestinationAddress,
- *     PULONG  SourceAddress
- *     );
- */
-#define RtlRetrieveUlong(DestAddress,SrcAddress) \
-    if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
-    { \
-        ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
-        ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
-        ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
-        ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
-    } \
-    else \
-    { \
-        *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
-    }
-
-NTSYSAPI
-VOID
-NTAPI
-RtlRetrieveUshort(
-  IN OUT PUSHORT  DestinationAddress,
-  IN PUSHORT  SourceAddress);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlSetAllBits(
-  IN PRTL_BITMAP  BitMapHeader);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlSetBit(
-  PRTL_BITMAP  BitMapHeader,
-  ULONG  BitNumber);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlSetBits(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  StartingIndex,
-  IN ULONG  NumberToSet);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlSetDaclSecurityDescriptor(
-  IN OUT PSECURITY_DESCRIPTOR  SecurityDescriptor,
-  IN BOOLEAN  DaclPresent,
-  IN PACL  Dacl  OPTIONAL,
-  IN BOOLEAN  DaclDefaulted  OPTIONAL);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlStoreUlong(
-  IN PULONG  Address,
-  IN ULONG  Value);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlStoreUlonglong(
-  IN OUT PULONGLONG  Address,
-  ULONGLONG  Value);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlStoreUlongPtr(
-  IN OUT PULONG_PTR  Address,
-  IN ULONG_PTR  Value);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlStoreUshort(
-  IN PUSHORT  Address,
-  IN USHORT  Value);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlStringFromGUID(
-  IN REFGUID  Guid,
-  OUT PUNICODE_STRING  GuidString);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlTestBit(
-  IN PRTL_BITMAP  BitMapHeader,
-  IN ULONG  BitNumber);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlTimeFieldsToTime(
-  IN PTIME_FIELDS  TimeFields,
-  IN PLARGE_INTEGER  Time);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlTimeToTimeFields(
-  IN PLARGE_INTEGER  Time,
-  IN PTIME_FIELDS  TimeFields);
-
-#define RtlUnicodeStringToAnsiSize(STRING) (                  \
-    NLS_MB_CODE_PAGE_TAG ?                                    \
-    RtlxUnicodeStringToAnsiSize(STRING) :                     \
-    ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
-)
-
-FORCEINLINE
-VOID
-RtlInitEmptyUnicodeString(OUT PUNICODE_STRING UnicodeString,
-                          IN PWSTR Buffer,
-                          IN USHORT BufferSize)
-{
-    UnicodeString->Length = 0;
-    UnicodeString->MaximumLength = BufferSize;
-    UnicodeString->Buffer = Buffer;
-}
-
-FORCEINLINE
-VOID
-RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString,
-                       IN PCHAR Buffer,
-                       IN USHORT BufferSize)
-{
-    AnsiString->Length = 0;
-    AnsiString->MaximumLength = BufferSize;
-    AnsiString->Buffer = Buffer;
-}
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlUnicodeStringToAnsiString(
-  IN OUT PANSI_STRING  DestinationString,
-  IN PCUNICODE_STRING  SourceString,
-  IN BOOLEAN  AllocateDestinationString);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlUnicodeStringToInteger(
-  IN PCUNICODE_STRING  String,
-  IN ULONG  Base  OPTIONAL,
-  OUT PULONG  Value);
-
-NTSYSAPI
-WCHAR
-NTAPI
-RtlUpcaseUnicodeChar(
-  IN WCHAR  SourceCharacter);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlUpcaseUnicodeString(
-  IN OUT PUNICODE_STRING  DestinationString  OPTIONAL,
-  IN PCUNICODE_STRING  SourceString,
-  IN BOOLEAN  AllocateDestinationString);
-
-NTSYSAPI
-CHAR
-NTAPI
-RtlUpperChar(
-  IN CHAR Character);
-
-NTSYSAPI
-VOID
-NTAPI
-RtlUpperString(
-  IN OUT PSTRING  DestinationString,
-  IN PSTRING  SourceString);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlValidRelativeSecurityDescriptor(
-  IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
-  IN ULONG  SecurityDescriptorLength,
-  IN SECURITY_INFORMATION  RequiredInformation);
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlValidSecurityDescriptor(
-  IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlVerifyVersionInfo(
-  IN PRTL_OSVERSIONINFOEXW  VersionInfo,
-  IN ULONG  TypeMask,
-  IN ULONGLONG  ConditionMask);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlVolumeDeviceToDosName(
-  IN PVOID  VolumeDeviceObject,
-  OUT PUNICODE_STRING  DosName);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlWalkFrameChain(
-  OUT PVOID  *Callers,
-  IN ULONG  Count,
-  IN ULONG  Flags);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-RtlWriteRegistryValue(
-  IN ULONG  RelativeTo,
-  IN PCWSTR  Path,
-  IN PCWSTR  ValueName,
-  IN ULONG  ValueType,
-  IN PVOID  ValueData,
-  IN ULONG  ValueLength);
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlxUnicodeStringToAnsiSize(
-  IN PCUNICODE_STRING  UnicodeString);
-
-/*
- * VOID
- * RtlZeroMemory(
- *   IN VOID UNALIGNED  *Destination,
- *   IN SIZE_T  Length)
- */
-#ifndef RtlZeroMemory
-#define RtlZeroMemory(Destination, Length) \
-  memset(Destination, 0, Length)
-#endif
-
-#ifndef RtlZeroBytes
-#define RtlZeroBytes RtlZeroMemory
-#endif
+RtlWalkFrameChain(
+  OUT PVOID  *Callers,
+  IN ULONG  Count,
+  IN ULONG  Flags);
 
 NTKERNELAPI
 BOOLEAN
@@ -7388,22 +6230,6 @@ KeTryToAcquireGuardedMutex(
     IN OUT PKGUARDED_MUTEX GuardedMutex
 );
 
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-ExAcquireRundownProtectionEx(
-     IN OUT PEX_RUNDOWN_REF RunRef,
-     IN ULONG Count
-);
-
-NTKERNELAPI
-VOID
-FASTCALL
-ExReleaseRundownProtectionEx(
-     IN OUT PEX_RUNDOWN_REF RunRef,
-     IN ULONG Count
-);
-
 /* Fast Mutex */
 #define ExInitializeFastMutex(_FastMutex) \
 { \
@@ -7415,877 +6241,475 @@ ExReleaseRundownProtectionEx(
 
 NTKERNELAPI
 VOID
-FASTCALL
-ExAcquireFastMutexUnsafe(IN OUT PFAST_MUTEX FastMutex);
+NTAPI
+KeInitializeEvent(
+  IN PRKEVENT  Event,
+  IN EVENT_TYPE  Type,
+  IN BOOLEAN  State);
 
-NTKERNELAPI
-VOID
-FASTCALL
-ExReleaseFastMutexUnsafe(IN OUT PFAST_MUTEX FastMutex);
+/******************************************************************************
+ *                            Executive Types                                 *
+ ******************************************************************************/
 
-#if defined(_NTHAL_) && defined(_X86_)
-NTKERNELAPI
-VOID
-FASTCALL
-ExiAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
+typedef struct _ZONE_SEGMENT_HEADER {
+  SINGLE_LIST_ENTRY  SegmentList;
+  PVOID  Reserved;
+} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
 
-NTKERNELAPI
-VOID
-FASTCALL
-ExiReleaseFastMutex(IN OUT PFAST_MUTEX FastMutex);
+typedef struct _ZONE_HEADER {
+  SINGLE_LIST_ENTRY  FreeList;
+  SINGLE_LIST_ENTRY  SegmentList;
+  ULONG  BlockSize;
+  ULONG  TotalSegmentSize;
+} ZONE_HEADER, *PZONE_HEADER;
+
+#define PROTECTED_POOL                    0x80000000
+
+/******************************************************************************
+ *                          Executive Functions                               *
+ ******************************************************************************/
 
 NTKERNELAPI
-BOOLEAN
-FASTCALL
-ExiTryToAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
+NTSTATUS
+NTAPI
+ExExtendZone(
+  IN PZONE_HEADER  Zone,
+  IN PVOID  Segment,
+  IN ULONG  SegmentSize);
 
-#define ExAcquireFastMutex(FastMutex)       ExiAcquireFastMutex(FastMutex)
-#define ExReleaseFastMutex(FastMutex)       ExiReleaseFastMutex(FastMutex)
-#define ExTryToAcquireFastMutex(FastMutex)  ExiTryToAcquireFastMutex(FastMutex)
+static __inline PVOID
+ExAllocateFromZone(
+  IN PZONE_HEADER  Zone)
+{
+  if (Zone->FreeList.Next)
+    Zone->FreeList.Next = Zone->FreeList.Next->Next;
+  return (PVOID) Zone->FreeList.Next;
+}
 
-#else
+static __inline PVOID
+ExFreeToZone(
+  IN PZONE_HEADER  Zone,
+  IN PVOID  Block)
+{
+  ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
+  Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
+  return ((PSINGLE_LIST_ENTRY) Block)->Next;
+}
 
 NTKERNELAPI
-VOID
-FASTCALL
-ExAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
+NTSTATUS
+NTAPI
+ExInitializeZone(
+  IN PZONE_HEADER  Zone,
+  IN ULONG  BlockSize,
+  IN PVOID  InitialSegment,
+  IN ULONG  InitialSegmentSize);
 
-NTKERNELAPI
-VOID
-FASTCALL
-ExReleaseFastMutex(IN OUT PFAST_MUTEX FastMutex);
+/*
+ * PVOID
+ * ExInterlockedAllocateFromZone(
+ *   IN PZONE_HEADER  Zone,
+ *   IN PKSPIN_LOCK  Lock)
+ */
+#define ExInterlockedAllocateFromZone(Zone, Lock) \
+    ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
 
 NTKERNELAPI
-BOOLEAN
-FASTCALL
-ExTryToAcquireFastMutex(IN OUT PFAST_MUTEX FastMutex);
-#endif
+NTSTATUS
+NTAPI
+ExInterlockedExtendZone(
+  IN PZONE_HEADER  Zone,
+  IN PVOID  Segment,
+  IN ULONG  SegmentSize,
+  IN PKSPIN_LOCK  Lock);
 
-/** Executive support routines **/
+/* PVOID
+ * ExInterlockedFreeToZone(
+ *  IN PZONE_HEADER  Zone,
+ *  IN PVOID  Block,
+ *  IN PKSPIN_LOCK  Lock);
+ */
+#define ExInterlockedFreeToZone(Zone, Block, Lock) \
+    ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock)
 
-NTKERNELAPI
-BOOLEAN
-NTAPI
-ExAcquireResourceExclusiveLite(
-  IN PERESOURCE  Resource,
-  IN BOOLEAN  Wait);
+/*
+ * VOID
+ * InitializeSListHead(
+ *   IN PSLIST_HEADER  SListHead)
+ */
+#define InitializeSListHead(_SListHead) \
+       (_SListHead)->Alignment = 0
+
+#define ExInitializeSListHead InitializeSListHead
+
+/*
+ * BOOLEAN
+ * ExIsFullZone(
+ *  IN PZONE_HEADER  Zone)
+ */
+#define ExIsFullZone(Zone) \
+  ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
+
+/* BOOLEAN
+ * ExIsObjectInFirstZoneSegment(
+ *     IN PZONE_HEADER Zone,
+ *     IN PVOID Object);
+ */
+#define ExIsObjectInFirstZoneSegment(Zone,Object) \
+    ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \
+                ((PUCHAR)(Object) <  (PUCHAR)(Zone)->SegmentList.Next + \
+                         (Zone)->TotalSegmentSize)) )
 
 NTKERNELAPI
-BOOLEAN
+DECLSPEC_NORETURN
+VOID
 NTAPI
-ExAcquireResourceSharedLite(
-  IN PERESOURCE  Resource,
-  IN BOOLEAN  Wait);
+ExRaiseAccessViolation(
+  VOID);
 
 NTKERNELAPI
-BOOLEAN
+DECLSPEC_NORETURN
+VOID
 NTAPI
-ExAcquireSharedStarveExclusive(
-  IN PERESOURCE  Resource,
-  IN BOOLEAN  Wait);
+ExRaiseDatatypeMisalignment(
+  VOID);
 
 NTKERNELAPI
-BOOLEAN
+NTSTATUS
 NTAPI
-ExAcquireSharedWaitForExclusive(
-  IN PERESOURCE  Resource,
-  IN BOOLEAN  Wait);
+ExUuidCreate(
+  OUT UUID  *Uuid);
 
-static __inline PVOID
-ExAllocateFromNPagedLookasideList(
-  IN PNPAGED_LOOKASIDE_LIST  Lookaside)
-{
-  PVOID Entry;
+#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
+#define ExAcquireResourceShared ExAcquireResourceSharedLite
+#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
+#define ExDeleteResource ExDeleteResourceLite
+#define ExInitializeResource ExInitializeResourceLite
+#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
+#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
+#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
+#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
 
-  Lookaside->L.TotalAllocates++;
-  Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
-  if (Entry == NULL) {
-    Lookaside->L.AllocateMisses++;
-    Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, Lookaside->L.Size, Lookaside->L.Tag);
-  }
-  return Entry;
-}
 
-static __inline PVOID
-ExAllocateFromPagedLookasideList(
-  IN PPAGED_LOOKASIDE_LIST  Lookaside)
-{
-  PVOID Entry;
+#if DBG
 
-  Lookaside->L.TotalAllocates++;
-  Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
-  if (Entry == NULL) {
-    Lookaside->L.AllocateMisses++;
-    Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, Lookaside->L.Size, Lookaside->L.Tag);
-  }
-  return Entry;
+#define PAGED_CODE() { \
+  if (KeGetCurrentIrql() > APC_LEVEL) { \
+    KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
+    ASSERT(FALSE); \
+  } \
 }
 
+#else
+
+#define PAGED_CODE()
+
+#endif
+
 NTKERNELAPI
-PVOID
+VOID
 NTAPI
-ExAllocatePoolWithQuotaTag(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes,
-  IN ULONG  Tag);
+ProbeForRead(
+  IN CONST VOID  *Address,
+  IN SIZE_T  Length,
+  IN ULONG  Alignment);
 
 NTKERNELAPI
-PVOID
+VOID
 NTAPI
-ExAllocatePoolWithTag(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes,
-  IN ULONG  Tag);
+ProbeForWrite(
+  IN PVOID  Address,
+  IN SIZE_T  Length,
+  IN ULONG  Alignment);
 
-#ifdef POOL_TAGGING
 
-#define ExAllocatePoolWithQuota(p,n) ExAllocatePoolWithQuotaTag(p,n,' kdD')
-#define ExAllocatePool(p,n) ExAllocatePoolWithTag(p,n,' kdD')
 
-#else /* !POOL_TAGGING */
+/** Configuration manager routines **/
 
 NTKERNELAPI
-PVOID
+NTSTATUS
 NTAPI
-ExAllocatePool(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes);
+CmRegisterCallback(
+  IN PEX_CALLBACK_FUNCTION  Function,
+  IN PVOID  Context,
+  IN OUT PLARGE_INTEGER  Cookie);
 
 NTKERNELAPI
-PVOID
+NTSTATUS
 NTAPI
-ExAllocatePoolWithQuota(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes);
+CmUnRegisterCallback(
+  IN LARGE_INTEGER  Cookie);
 
-#endif /* POOL_TAGGING */
 
-NTKERNELAPI
-PVOID
-NTAPI
-ExAllocatePoolWithTagPriority(
-  IN POOL_TYPE  PoolType,
-  IN SIZE_T  NumberOfBytes,
-  IN ULONG  Tag,
-  IN EX_POOL_PRIORITY  Priority);
 
-NTKERNELAPI
-VOID
-NTAPI
-ExConvertExclusiveToSharedLite(
-  IN PERESOURCE  Resource);
+/** Filesystem runtime library routines **/
 
 NTKERNELAPI
-NTSTATUS
+BOOLEAN
 NTAPI
-ExCreateCallback(
-  OUT PCALLBACK_OBJECT  *CallbackObject,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes,
-  IN BOOLEAN  Create,
-  IN BOOLEAN  AllowMultipleCallbacks);
+FsRtlIsTotalDeviceFailure(
+  IN NTSTATUS  Status);
 
-NTKERNELAPI
-VOID
-NTAPI
-ExDeleteNPagedLookasideList(
-  IN PNPAGED_LOOKASIDE_LIST  Lookaside);
 
-NTKERNELAPI
-VOID
-NTAPI
-ExDeletePagedLookasideList(
-  IN PPAGED_LOOKASIDE_LIST  Lookaside);
 
-NTKERNELAPI
-NTSTATUS
+/** Hardware abstraction layer routines **/
+
+NTHALAPI
+BOOLEAN
 NTAPI
-ExDeleteResourceLite(
-  IN PERESOURCE  Resource);
+HalMakeBeep(
+  IN ULONG Frequency);
 
 NTKERNELAPI
 VOID
-NTAPI
-ExFreePool(
-  IN PVOID  P);
-
-#define PROTECTED_POOL                    0x80000000
-
-#ifdef POOL_TAGGING
-#define ExFreePool(P) ExFreePoolWithTag(P, 0)
-#endif
+FASTCALL
+HalExamineMBR(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN ULONG  MBRTypeIdentifier,
+  OUT PVOID  *Buffer);
 
-NTKERNELAPI
 VOID
 NTAPI
-ExFreePoolWithTag(
-  IN PVOID  P,
-  IN ULONG  Tag);
+HalPutDmaAdapter(
+    PADAPTER_OBJECT AdapterObject
+);
 
-#define ExQueryDepthSList(ListHead) QueryDepthSList(ListHead)
 
-static __inline VOID
-ExFreeToNPagedLookasideList(
-  IN PNPAGED_LOOKASIDE_LIST  Lookaside,
-  IN PVOID  Entry)
-{
-  Lookaside->L.TotalFrees++;
-  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
-    Lookaside->L.FreeMisses++;
-    (Lookaside->L.Free)(Entry);
-  } else {
-    InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
-  }
-}
+/** Io access routines **/
 
-static __inline VOID
-ExFreeToPagedLookasideList(
-  IN PPAGED_LOOKASIDE_LIST  Lookaside,
-  IN PVOID  Entry)
-{
-  Lookaside->L.TotalFrees++;
-  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
-    Lookaside->L.FreeMisses++;
-    (Lookaside->L.Free)(Entry);
-  } else {
-    InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
-  }
-}
+#if !defined(_M_AMD64)
+NTHALAPI
+VOID
+NTAPI
+READ_PORT_BUFFER_UCHAR(
+  IN PUCHAR  Port,
+  IN PUCHAR  Buffer,
+  IN ULONG  Count);
 
-/*
- * ERESOURCE_THREAD
- * ExGetCurrentResourceThread(
- *   VOID);
- */
-#define ExGetCurrentResourceThread() ((ERESOURCE_THREAD) PsGetCurrentThread())
+NTHALAPI
+VOID
+NTAPI
+READ_PORT_BUFFER_ULONG(
+  IN PULONG  Port,
+  IN PULONG  Buffer,
+  IN ULONG  Count);
 
-NTKERNELAPI
-ULONG
+NTHALAPI
+VOID
 NTAPI
-ExGetExclusiveWaiterCount(
-  IN PERESOURCE  Resource);
+READ_PORT_BUFFER_USHORT(
+  IN PUSHORT  Port,
+  IN PUSHORT  Buffer,
+  IN ULONG  Count);
 
-NTKERNELAPI
-KPROCESSOR_MODE
+NTHALAPI
+UCHAR
 NTAPI
-ExGetPreviousMode(
-  VOID);
+READ_PORT_UCHAR(
+  IN PUCHAR  Port);
 
-NTKERNELAPI
+NTHALAPI
 ULONG
 NTAPI
-ExGetSharedWaiterCount(
-  IN PERESOURCE  Resource);
+READ_PORT_ULONG(
+  IN PULONG  Port);
 
-NTKERNELAPI
-VOID
+NTHALAPI
+USHORT
 NTAPI
-KeInitializeEvent(
-  IN PRKEVENT  Event,
-  IN EVENT_TYPE  Type,
-  IN BOOLEAN  State);
+READ_PORT_USHORT(
+  IN PUSHORT  Port);
 
 NTKERNELAPI
 VOID
 NTAPI
-ExInitializeNPagedLookasideList(
-  IN PNPAGED_LOOKASIDE_LIST  Lookaside,
-  IN PALLOCATE_FUNCTION  Allocate  OPTIONAL,
-  IN PFREE_FUNCTION  Free  OPTIONAL,
-  IN ULONG  Flags,
-  IN SIZE_T  Size,
-  IN ULONG  Tag,
-  IN USHORT  Depth);
+READ_REGISTER_BUFFER_UCHAR(
+  IN PUCHAR  Register,
+  IN PUCHAR  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
 VOID
 NTAPI
-ExInitializePagedLookasideList(
-  IN PPAGED_LOOKASIDE_LIST  Lookaside,
-  IN PALLOCATE_FUNCTION  Allocate  OPTIONAL,
-  IN PFREE_FUNCTION  Free  OPTIONAL,
-  IN ULONG  Flags,
-  IN SIZE_T  Size,
-  IN ULONG  Tag,
-  IN USHORT  Depth);
+READ_REGISTER_BUFFER_ULONG(
+  IN PULONG  Register,
+  IN PULONG  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
-NTSTATUS
+VOID
 NTAPI
-ExInitializeResourceLite(
-  IN PERESOURCE  Resource);
-
-/*
- * VOID
- * InitializeSListHead(
- *   IN PSLIST_HEADER  SListHead)
- */
-#define InitializeSListHead(_SListHead) \
-       (_SListHead)->Alignment = 0
-
-#define ExInitializeSListHead InitializeSListHead
+READ_REGISTER_BUFFER_USHORT(
+  IN PUSHORT  Register,
+  IN PUSHORT  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
-LARGE_INTEGER
+UCHAR
 NTAPI
-ExInterlockedAddLargeInteger(
-  IN PLARGE_INTEGER  Addend,
-  IN LARGE_INTEGER  Increment,
-  IN PKSPIN_LOCK  Lock);
-
-NTKERNELAPI
-VOID
-FASTCALL
-ExInterlockedAddLargeStatistic(
-  IN PLARGE_INTEGER  Addend,
-  IN ULONG  Increment);
+READ_REGISTER_UCHAR(
+  IN PUCHAR  Register);
 
 NTKERNELAPI
 ULONG
 NTAPI
-ExInterlockedAddUlong(
-  IN PULONG  Addend,
-  IN ULONG  Increment,
-  PKSPIN_LOCK  Lock);
-
-NTKERNELAPI
-LONGLONG
-FASTCALL
-ExInterlockedCompareExchange64(
-  IN OUT PLONGLONG  Destination,
-  IN PLONGLONG  Exchange,
-  IN PLONGLONG  Comparand,
-  IN PKSPIN_LOCK  Lock);
-
-NTKERNELAPI
-LONGLONG
-FASTCALL
-ExfInterlockedCompareExchange64(
-  IN OUT LONGLONG volatile  *Destination,
-  IN PLONGLONG  Exchange,
-  IN PLONGLONG  Comperand);
-
-NTKERNELAPI
-PSINGLE_LIST_ENTRY
-FASTCALL
-ExInterlockedFlushSList(
-  IN PSLIST_HEADER  ListHead);
+READ_REGISTER_ULONG(
+  IN PULONG  Register);
 
 NTKERNELAPI
-PLIST_ENTRY
+USHORT
 NTAPI
-ExInterlockedInsertHeadList(
-  IN PLIST_ENTRY  ListHead,
-  IN PLIST_ENTRY  ListEntry,
-  IN PKSPIN_LOCK  Lock);
+READ_REGISTER_USHORT(
+  IN PUSHORT  Register);
 
-NTKERNELAPI
-PLIST_ENTRY
+NTHALAPI
+VOID
 NTAPI
-ExInterlockedInsertTailList(
-  IN PLIST_ENTRY  ListHead,
-  IN PLIST_ENTRY  ListEntry,
-  IN PKSPIN_LOCK  Lock);
+WRITE_PORT_BUFFER_UCHAR(
+  IN PUCHAR  Port,
+  IN PUCHAR  Buffer,
+  IN ULONG  Count);
 
-NTKERNELAPI
-PSINGLE_LIST_ENTRY
+NTHALAPI
+VOID
 NTAPI
-ExInterlockedPopEntryList(
-  IN PSINGLE_LIST_ENTRY  ListHead,
-  IN PKSPIN_LOCK  Lock);
-
-/*
- * PSINGLE_LIST_ENTRY
- * ExInterlockedPopEntrySList(
- *   IN PSLIST_HEADER  ListHead,
- *   IN PKSPIN_LOCK  Lock)
- */
-#define ExInterlockedPopEntrySList(_ListHead, \
-                                   _Lock) \
-  InterlockedPopEntrySList(_ListHead)
-
-NTKERNELAPI
-PSINGLE_LIST_ENTRY
-NTAPI
-ExInterlockedPushEntryList(
-  IN PSINGLE_LIST_ENTRY  ListHead,
-  IN PSINGLE_LIST_ENTRY  ListEntry,
-  IN PKSPIN_LOCK  Lock);
-
-/*
- * PSINGLE_LIST_ENTRY FASTCALL
- * ExInterlockedPushEntrySList(
- *   IN PSLIST_HEADER  ListHead,
- *   IN PSINGLE_LIST_ENTRY  ListEntry,
- *   IN PKSPIN_LOCK  Lock)
- */
-#define ExInterlockedPushEntrySList(_ListHead, \
-                                    _ListEntry, \
-                                    _Lock) \
-  InterlockedPushEntrySList(_ListHead, _ListEntry)
-
-NTKERNELAPI
-PLIST_ENTRY
-NTAPI
-ExInterlockedRemoveHeadList(
-  IN PLIST_ENTRY  ListHead,
-  IN PKSPIN_LOCK  Lock);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-ExIsProcessorFeaturePresent(
-  IN ULONG  ProcessorFeature);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-ExIsResourceAcquiredExclusiveLite(
-  IN PERESOURCE  Resource);
-
-NTKERNELAPI
-USHORT
-NTAPI
-ExIsResourceAcquiredLite(
-  IN PERESOURCE  Resource);
-
-NTKERNELAPI
-ULONG
-NTAPI
-ExIsResourceAcquiredSharedLite(
-  IN PERESOURCE  Resource);
-
-NTKERNELAPI
-VOID
-NTAPI
-ExLocalTimeToSystemTime(
-  IN PLARGE_INTEGER  LocalTime,
-  OUT PLARGE_INTEGER  SystemTime);
-
-NTKERNELAPI
-VOID
-NTAPI
-ExNotifyCallback(
-  IN PCALLBACK_OBJECT  CallbackObject,
-  IN PVOID  Argument1,
-  IN PVOID  Argument2);
+WRITE_PORT_BUFFER_ULONG(
+  IN PULONG  Port,
+  IN PULONG  Buffer,
+  IN ULONG  Count);
 
-NTKERNELAPI
+NTHALAPI
 VOID
 NTAPI
-__declspec(noreturn)
-ExRaiseAccessViolation(
-  VOID);
+WRITE_PORT_BUFFER_USHORT(
+  IN PUSHORT  Port,
+  IN PUSHORT  Buffer,
+  IN ULONG  Count);
 
-NTKERNELAPI
+NTHALAPI
 VOID
 NTAPI
-__declspec(noreturn)
-ExRaiseDatatypeMisalignment(
-  VOID);
+WRITE_PORT_UCHAR(
+  IN PUCHAR  Port,
+  IN UCHAR  Value);
 
-DECLSPEC_NORETURN
-NTKERNELAPI
+NTHALAPI
 VOID
 NTAPI
-__declspec(noreturn)
-ExRaiseStatus(
-  IN NTSTATUS  Status);
-
-NTKERNELAPI
-PVOID
-NTAPI
-ExRegisterCallback(
-  IN PCALLBACK_OBJECT  CallbackObject,
-  IN PCALLBACK_FUNCTION  CallbackFunction,
-  IN PVOID  CallbackContext);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ExReinitializeResourceLite(
-  IN PERESOURCE  Resource);
+WRITE_PORT_ULONG(
+  IN PULONG  Port,
+  IN ULONG  Value);
 
-NTKERNELAPI
+NTHALAPI
 VOID
 NTAPI
-ExReleaseResourceForThreadLite(
-  IN PERESOURCE  Resource,
-  IN ERESOURCE_THREAD  ResourceThreadId);
-
-NTKERNELAPI
-VOID
-FASTCALL
-ExReleaseResourceLite(
-  IN PERESOURCE  Resource);
+WRITE_PORT_USHORT(
+  IN PUSHORT  Port,
+  IN USHORT  Value);
 
 NTKERNELAPI
 VOID
 NTAPI
-ExSetResourceOwnerPointer(
-  IN PERESOURCE  Resource,
-  IN PVOID  OwnerPointer);
-
-NTKERNELAPI
-ULONG
-NTAPI
-ExSetTimerResolution(
-  IN ULONG  DesiredTime,
-  IN BOOLEAN  SetResolution);
+WRITE_REGISTER_BUFFER_UCHAR(
+  IN PUCHAR  Register,
+  IN PUCHAR  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
 VOID
 NTAPI
-ExSystemTimeToLocalTime(
-  IN PLARGE_INTEGER  SystemTime,
-  OUT PLARGE_INTEGER  LocalTime);
+WRITE_REGISTER_BUFFER_ULONG(
+  IN PULONG  Register,
+  IN PULONG  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
 VOID
 NTAPI
-ExUnregisterCallback(
-  IN PVOID  CbRegistration);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ExUuidCreate(
-  OUT UUID  *Uuid);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-ExVerifySuite(
-  IN SUITE_TYPE  SuiteType);
-
-#ifdef DBG
-
-#define PAGED_CODE() { \
-  if (KeGetCurrentIrql() > APC_LEVEL) { \
-    KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
-    ASSERT(FALSE); \
-  } \
-}
-
-#else
-
-#define PAGED_CODE()
-
-#endif
+WRITE_REGISTER_BUFFER_USHORT(
+  IN PUSHORT  Register,
+  IN PUSHORT  Buffer,
+  IN ULONG  Count);
 
 NTKERNELAPI
 VOID
 NTAPI
-ProbeForRead(
-  IN CONST VOID  *Address,
-  IN SIZE_T  Length,
-  IN ULONG  Alignment);
+WRITE_REGISTER_UCHAR(
+  IN PUCHAR  Register,
+  IN UCHAR  Value);
 
 NTKERNELAPI
 VOID
 NTAPI
-ProbeForWrite(
-  IN PVOID  Address,
-  IN SIZE_T  Length,
-  IN ULONG  Alignment);
-
-
-
-/** Configuration manager routines **/
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-CmRegisterCallback(
-  IN PEX_CALLBACK_FUNCTION  Function,
-  IN PVOID  Context,
-  IN OUT PLARGE_INTEGER  Cookie);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-CmUnRegisterCallback(
-  IN LARGE_INTEGER  Cookie);
-
-
-
-/** Filesystem runtime library routines **/
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-FsRtlIsTotalDeviceFailure(
-  IN NTSTATUS  Status);
-
-
-
-/** Hardware abstraction layer routines **/
-
-NTHALAPI
-BOOLEAN
-NTAPI
-HalMakeBeep(
-  IN ULONG Frequency);
+WRITE_REGISTER_ULONG(
+  IN PULONG  Register,
+  IN ULONG  Value);
 
 NTKERNELAPI
 VOID
-FASTCALL
-HalExamineMBR(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  SectorSize,
-  IN ULONG  MBRTypeIdentifier,
-  OUT PVOID  *Buffer);
-
-VOID
-NTAPI
-HalPutDmaAdapter(
-    PADAPTER_OBJECT AdapterObject
-);
-
-NTKERNELAPI
-NTSTATUS
 NTAPI
-IoAllocateAdapterChannel(
-    IN PADAPTER_OBJECT AdapterObject,
-    IN PDEVICE_OBJECT DeviceObject,
-    IN ULONG NumberOfMapRegisters,
-    IN PDRIVER_CONTROL ExecutionRoutine,
-    IN PVOID Context
-);
+WRITE_REGISTER_USHORT(
+  IN PUSHORT  Register,
+  IN USHORT  Value);
 
-/** Io access routines **/
+#else
 
-#if !defined(_M_AMD64)
-NTHALAPI
+FORCEINLINE
 VOID
-NTAPI
 READ_PORT_BUFFER_UCHAR(
   IN PUCHAR  Port,
   IN PUCHAR  Buffer,
-  IN ULONG  Count);
+  IN ULONG  Count)
+{
+    __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+}
 
-NTHALAPI
+FORCEINLINE
 VOID
-NTAPI
 READ_PORT_BUFFER_ULONG(
   IN PULONG  Port,
   IN PULONG  Buffer,
-  IN ULONG  Count);
+  IN ULONG  Count)
+{
+    __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+}
 
-NTHALAPI
+FORCEINLINE
 VOID
-NTAPI
 READ_PORT_BUFFER_USHORT(
   IN PUSHORT  Port,
   IN PUSHORT  Buffer,
-  IN ULONG  Count);
+  IN ULONG  Count)
+{
+    __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
+}
 
-NTHALAPI
+FORCEINLINE
 UCHAR
-NTAPI
 READ_PORT_UCHAR(
-  IN PUCHAR  Port);
+  IN PUCHAR  Port)
+{
+    return __inbyte((USHORT)(ULONG_PTR)Port);
+}
 
-NTHALAPI
+FORCEINLINE
 ULONG
-NTAPI
 READ_PORT_ULONG(
-  IN PULONG  Port);
+  IN PULONG  Port)
+{
+    return __indword((USHORT)(ULONG_PTR)Port);
+}
 
-NTHALAPI
+FORCEINLINE
 USHORT
-NTAPI
 READ_PORT_USHORT(
-  IN PUSHORT  Port);
+  IN PUSHORT  Port)
+{
+    return __inword((USHORT)(ULONG_PTR)Port);
+}
 
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-READ_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-UCHAR
-NTAPI
-READ_REGISTER_UCHAR(
-  IN PUCHAR  Register);
-
-NTKERNELAPI
-ULONG
-NTAPI
-READ_REGISTER_ULONG(
-  IN PULONG  Register);
-
-NTKERNELAPI
-USHORT
-NTAPI
-READ_REGISTER_USHORT(
-  IN PUSHORT  Register);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_UCHAR(
-  IN PUCHAR  Port,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_ULONG(
-  IN PULONG  Port,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_USHORT(
-  IN PUSHORT  Port,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_UCHAR(
-  IN PUCHAR  Port,
-  IN UCHAR  Value);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_ULONG(
-  IN PULONG  Port,
-  IN ULONG  Value);
-
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_USHORT(
-  IN PUSHORT  Port,
-  IN USHORT  Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_UCHAR(
-  IN PUCHAR  Register,
-  IN UCHAR  Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_ULONG(
-  IN PULONG  Register,
-  IN ULONG  Value);
-
-NTKERNELAPI
-VOID
-NTAPI
-WRITE_REGISTER_USHORT(
-  IN PUSHORT  Register,
-  IN USHORT  Value);
-
-#else
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_UCHAR(
-  IN PUCHAR  Port,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count)
-{
-    __inbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_ULONG(
-  IN PULONG  Port,
-  IN PULONG  Buffer,
-  IN ULONG  Count)
-{
-    __indwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_PORT_BUFFER_USHORT(
-  IN PUSHORT  Port,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count)
-{
-    __inwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_PORT_UCHAR(
-  IN PUCHAR  Port)
-{
-    return __inbyte((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-ULONG
-READ_PORT_ULONG(
-  IN PULONG  Port)
-{
-    return __indword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
-USHORT
-READ_PORT_USHORT(
-  IN PUSHORT  Port)
-{
-    return __inword((USHORT)(ULONG_PTR)Port);
-}
-
-FORCEINLINE
+FORCEINLINE
 VOID
 READ_REGISTER_BUFFER_UCHAR(
   IN PUCHAR  Register,
@@ -8514,6 +6938,18 @@ IoAcquireRemoveLockEx(
     } \
 }
 
+#ifndef DMA_MACROS_DEFINED
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoAllocateAdapterChannel(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG NumberOfMapRegisters,
+    IN PDRIVER_CONTROL ExecutionRoutine,
+    IN PVOID Context);
+#endif
+
 NTKERNELAPI
 VOID
 NTAPI
@@ -9231,6 +7667,15 @@ IoReadDiskSignature(
   IN ULONG  BytesPerSector,
   OUT PDISK_SIGNATURE  Signature);
 
+NTKERNELAPI
+NTSTATUS
+FASTCALL
+IoReadPartitionTable(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN BOOLEAN  ReturnRecognizedPartitions,
+  OUT struct _DRIVE_LAYOUT_INFORMATION  **PartitionBuffer);
+
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -9493,6 +7938,15 @@ IoSetHardErrorOrVerifyDevice(
   (_Irp)->Tail.Overlay.CurrentStackLocation--; \
 }
 
+NTKERNELAPI
+NTSTATUS
+FASTCALL
+IoSetPartitionInformation(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN ULONG  PartitionNumber,
+  IN ULONG  PartitionType);
+
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -9760,6 +8214,16 @@ NTAPI
 IoWriteErrorLogEntry(
   IN PVOID  ElEntry);
 
+NTKERNELAPI
+NTSTATUS
+FASTCALL
+IoWritePartitionTable(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN ULONG  SectorsPerTrack,
+  IN ULONG  NumberOfHeads,
+  IN struct _DRIVE_LAYOUT_INFORMATION  *PartitionBuffer);
+
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -9819,16 +8283,16 @@ KeAreApcsDisabled(
   VOID);
 
 NTKERNELAPI
+DECLSPEC_NORETURN
 VOID
 NTAPI
-__declspec(noreturn)
 KeBugCheck(
   IN ULONG  BugCheckCode);
 
 NTKERNELAPI
+DECLSPEC_NORETURN
 VOID
 NTAPI
-__declspec(noreturn)
 KeBugCheckEx(
   IN ULONG  BugCheckCode,
   IN ULONG_PTR  BugCheckParameter1,
@@ -9882,6 +8346,13 @@ KeEnterCriticalRegion(
 #define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock)
 #define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock)
 
+NTKERNELAPI
+VOID
+NTAPI
+KeFlushQueuedDpcs(
+    VOID
+);
+
 NTHALAPI
 VOID
 NTAPI
@@ -10652,19 +9123,6 @@ MmMarkPhysicalMemoryAsGood(
   IN PPHYSICAL_ADDRESS  StartAddress,
   IN OUT PLARGE_INTEGER  NumberOfBytes);
 
-/*
- * PVOID
- * MmGetSystemAddressForMdlSafe(
- *   IN PMDL  Mdl,
- *   IN MM_PAGE_PRIORITY  Priority)
- */
-#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
-  (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
-    | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
-    (_Mdl)->MappedSystemVa : \
-    (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
-      KernelMode, MmCached, NULL, FALSE, (_Priority)))
-
 NTKERNELAPI
 PVOID
 NTAPI
@@ -10880,7 +9338,7 @@ MmSecureVirtualMemory(
   IN ULONG  ProbeMode);
 
 NTKERNELAPI
-ULONG
+SIZE_T
 NTAPI
 MmSizeOfMdl(
   IN PVOID  Base,
@@ -11887,6 +10345,7 @@ DbgPrint(
   IN PCCH  Format,
   IN ...);
 
+NTSYSAPI
 ULONG
 DDKCDECLAPI
 DbgPrintEx(
@@ -11900,27 +10359,35 @@ NTAPI
 vDbgPrintEx(
   IN ULONG ComponentId,
   IN ULONG Level,
-  IN LPCSTR Format,
+  IN PCCH Format,
   IN va_list ap);
 
 ULONG
 NTAPI
 vDbgPrintExWithPrefix(
-  IN LPCSTR Prefix,
+  IN PCCH Prefix,
   IN ULONG ComponentId,
   IN ULONG Level,
-  IN LPCSTR Format,
+  IN PCCH Format,
   IN va_list ap);
 
 NTKERNELAPI
 ULONG
 DDKCDECLAPI
 DbgPrintReturnControlC(
-  IN PCH  Format,
+  IN PCCH  Format,
   IN ...);
 
+ULONG
+NTAPI
+DbgPrompt(
+    IN PCCH Prompt,
+    OUT PCH Response,
+    IN ULONG MaximumResponseLength
+);
+
 NTKERNELAPI
-BOOLEAN
+NTSTATUS
 NTAPI
 DbgQueryDebugFilterState(
   IN ULONG  ComponentId,
@@ -11934,7 +10401,7 @@ DbgSetDebugFilterState(
   IN ULONG  Level,
   IN BOOLEAN  State);
 
-#ifdef DBG
+#if DBG
 
 #define KdPrint(_x_) DbgPrint _x_
 #define KdPrintEx(_x_) DbgPrintEx _x_
@@ -11966,6 +10433,405 @@ extern BOOLEAN KdDebuggerEnabled;
 
 #endif
 
+/** Stuff from winnt4.h */
+
+#ifndef DMA_MACROS_DEFINED
+
+#if (NTDDI_VERSION >= NTDDI_WIN2K)
+
+//DECLSPEC_DEPRECATED_DDK
+NTHALAPI
+BOOLEAN
+NTAPI
+IoFlushAdapterBuffers(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PMDL Mdl,
+    IN PVOID MapRegisterBase,
+    IN PVOID CurrentVa,
+    IN ULONG Length,
+    IN BOOLEAN WriteToDevice);
+
+//DECLSPEC_DEPRECATED_DDK
+NTHALAPI
+VOID
+NTAPI
+IoFreeAdapterChannel(
+    IN PADAPTER_OBJECT AdapterObject);
+
+//DECLSPEC_DEPRECATED_DDK
+NTHALAPI
+VOID
+NTAPI
+IoFreeMapRegisters(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PVOID MapRegisterBase,
+    IN ULONG NumberOfMapRegisters);
+
+//DECLSPEC_DEPRECATED_DDK
+NTHALAPI
+PHYSICAL_ADDRESS
+NTAPI
+IoMapTransfer(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PMDL Mdl,
+    IN PVOID MapRegisterBase,
+    IN PVOID CurrentVa,
+    IN OUT PULONG Length,
+    IN BOOLEAN WriteToDevice);
+
+
+#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
+#endif // !defined(DMA_MACROS_DEFINED)
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoAssignResources(
+  IN PUNICODE_STRING  RegistryPath,
+  IN PUNICODE_STRING  DriverClassName  OPTIONAL,
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PDEVICE_OBJECT  DeviceObject  OPTIONAL,
+  IN PIO_RESOURCE_REQUIREMENTS_LIST  RequestedResources,
+  IN OUT PCM_RESOURCE_LIST  *AllocatedResources);
+
+NTKERNELAPI
+NTSTATUS
+NTAPI
+IoAttachDeviceByPointer(
+  IN PDEVICE_OBJECT  SourceDevice,
+  IN PDEVICE_OBJECT  TargetDevice);
+
+NTKERNELAPI
+BOOLEAN
+NTAPI
+MmIsNonPagedSystemAddressValid(
+  IN PVOID  VirtualAddress);
+
+#if defined(_AMD64_) || defined(_IA64_)
+//DECLSPEC_DEPRECATED_DDK_WINXP
+static __inline
+LARGE_INTEGER
+NTAPI_INLINE
+RtlLargeIntegerDivide(
+    IN LARGE_INTEGER Dividend,
+    IN LARGE_INTEGER Divisor,
+    IN OUT PLARGE_INTEGER Remainder)
+{
+    LARGE_INTEGER ret;
+    ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
+    if (Remainder)
+        Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
+    return ret;
+}
+#else
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerDivide(
+  IN LARGE_INTEGER  Dividend,
+  IN LARGE_INTEGER  Divisor,
+  IN OUT PLARGE_INTEGER  Remainder);
+#endif
+
+NTKERNELAPI
+INTERLOCKED_RESULT
+NTAPI
+ExInterlockedDecrementLong(
+  IN PLONG  Addend,
+  IN PKSPIN_LOCK  Lock);
+
+NTKERNELAPI
+ULONG
+NTAPI
+ExInterlockedExchangeUlong(
+  IN PULONG  Target,
+  IN ULONG  Value,
+  IN PKSPIN_LOCK  Lock);
+
+NTKERNELAPI
+INTERLOCKED_RESULT
+NTAPI
+ExInterlockedIncrementLong(
+  IN PLONG  Addend,
+  IN PKSPIN_LOCK  Lock);
+
+NTHALAPI
+VOID
+NTAPI
+HalAcquireDisplayOwnership(
+  IN PHAL_RESET_DISPLAY_PARAMETERS  ResetDisplayParameters);
+
+NTHALAPI
+NTSTATUS
+NTAPI
+HalAllocateAdapterChannel(
+  IN PADAPTER_OBJECT  AdapterObject,
+  IN PWAIT_CONTEXT_BLOCK  Wcb,
+  IN ULONG  NumberOfMapRegisters,
+  IN PDRIVER_CONTROL  ExecutionRoutine);
+
+NTHALAPI
+PVOID
+NTAPI
+HalAllocateCommonBuffer(
+  IN PADAPTER_OBJECT  AdapterObject,
+  IN ULONG  Length,
+  OUT PPHYSICAL_ADDRESS  LogicalAddress,
+  IN BOOLEAN  CacheEnabled);
+
+NTHALAPI
+NTSTATUS
+NTAPI
+HalAssignSlotResources(
+  IN PUNICODE_STRING  RegistryPath,
+  IN PUNICODE_STRING  DriverClassName,
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN INTERFACE_TYPE  BusType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN OUT PCM_RESOURCE_LIST  *AllocatedResources);
+
+NTHALAPI
+VOID
+NTAPI
+HalFreeCommonBuffer(
+  IN PADAPTER_OBJECT  AdapterObject,
+  IN ULONG  Length,
+  IN PHYSICAL_ADDRESS  LogicalAddress,
+  IN PVOID  VirtualAddress,
+  IN BOOLEAN  CacheEnabled);
+
+NTHALAPI
+PADAPTER_OBJECT
+NTAPI
+HalGetAdapter(
+  IN PDEVICE_DESCRIPTION  DeviceDescription,
+  IN OUT PULONG  NumberOfMapRegisters);
+
+NTHALAPI
+ULONG
+NTAPI
+HalGetBusData(
+  IN BUS_DATA_TYPE  BusDataType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN PVOID  Buffer,
+  IN ULONG  Length);
+
+NTHALAPI
+ULONG
+NTAPI
+HalGetBusDataByOffset(
+  IN BUS_DATA_TYPE  BusDataType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN PVOID  Buffer,
+  IN ULONG  Offset,
+  IN ULONG  Length);
+
+NTHALAPI
+ULONG
+NTAPI
+HalGetDmaAlignmentRequirement(
+  VOID);
+
+NTHALAPI
+ULONG
+NTAPI
+HalGetInterruptVector(
+  IN INTERFACE_TYPE  InterfaceType,
+  IN ULONG  BusNumber,
+  IN ULONG  BusInterruptLevel,
+  IN ULONG  BusInterruptVector,
+  OUT PKIRQL  Irql,
+  OUT PKAFFINITY  Affinity);
+
+NTHALAPI
+ULONG
+NTAPI
+HalReadDmaCounter(
+  IN PADAPTER_OBJECT  AdapterObject);
+
+NTHALAPI
+ULONG
+NTAPI
+HalSetBusData(
+  IN BUS_DATA_TYPE  BusDataType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN PVOID  Buffer,
+  IN ULONG  Length);
+
+NTHALAPI
+ULONG
+NTAPI
+HalSetBusDataByOffset(
+  IN BUS_DATA_TYPE  BusDataType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN PVOID  Buffer,
+  IN ULONG  Offset,
+  IN ULONG  Length);
+
+NTHALAPI
+BOOLEAN
+NTAPI
+HalTranslateBusAddress(
+  IN INTERFACE_TYPE  InterfaceType,
+  IN ULONG  BusNumber,
+  IN PHYSICAL_ADDRESS  BusAddress,
+  IN OUT PULONG  AddressSpace,
+  OUT PPHYSICAL_ADDRESS  TranslatedAddress);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerEqualToZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerGreaterOrEqualToZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerGreaterThan(
+  IN LARGE_INTEGER  Operand1,
+  IN LARGE_INTEGER  Operand2);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerGreaterThanOrEqualTo(
+  IN LARGE_INTEGER  Operand1,
+  IN LARGE_INTEGER  Operand2);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerGreaterThanZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerLessOrEqualToZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerLessThan(
+  IN LARGE_INTEGER  Operand1,
+  IN LARGE_INTEGER  Operand2);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerLessThanOrEqualTo(
+  IN LARGE_INTEGER  Operand1,
+  IN LARGE_INTEGER  Operand2);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerLessThanZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerNegate(
+  IN LARGE_INTEGER  Subtrahend);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerNotEqualTo(
+  IN LARGE_INTEGER  Operand1,
+  IN LARGE_INTEGER  Operand2);
+
+NTSYSAPI
+BOOLEAN
+NTAPI
+RtlLargeIntegerNotEqualToZero(
+  IN LARGE_INTEGER  Operand);
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftLeft(
+  IN LARGE_INTEGER  LargeInteger,
+  IN CCHAR  ShiftCount);
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerShiftRight(
+  IN LARGE_INTEGER  LargeInteger,
+  IN CCHAR  ShiftCount);
+
+NTSYSAPI
+LARGE_INTEGER
+NTAPI
+RtlLargeIntegerSubtract(
+  IN LARGE_INTEGER  Minuend,
+  IN LARGE_INTEGER  Subtrahend);
+
+
+/*
+ * ULONG
+ * COMPUTE_PAGES_SPANNED(
+ *   IN PVOID  Va,
+ *   IN ULONG  Size)
+ */
+#define COMPUTE_PAGES_SPANNED(Va, \
+                              Size) \
+  (ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size))
+
+
+/*
+** Architecture specific structures
+*/
+
+#ifdef _X86_
+
+NTKERNELAPI
+INTERLOCKED_RESULT
+FASTCALL
+Exfi386InterlockedIncrementLong(
+  IN PLONG  Addend);
+
+NTKERNELAPI
+INTERLOCKED_RESULT
+FASTCALL
+Exfi386InterlockedDecrementLong(
+  IN PLONG  Addend);
+
+NTKERNELAPI
+ULONG
+FASTCALL
+Exfi386InterlockedExchangeUlong(
+  IN PULONG  Target,
+  IN ULONG  Value);
+
+#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
+#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
+#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
+
+#endif /* _X86_ */
+    
+#ifdef _M_ARM
+//
+// NT-ARM is not documented
+//
+#include <armddk.h>   
+#endif
+
 #ifdef __cplusplus
 }
 #endif