HalAllocateCommonBuffer :
[reactos.git] / include / ddk / winddk.h
index 917ecc9..72b7074 100644 (file)
@@ -42,12 +42,6 @@ extern "C" {
 
 #include "intrin.h"
 
-#if !defined(_NTHAL_)
-#define NTHALAPI DECLSPEC_IMPORT
-#else
-#define NTHALAPI
-#endif
-
 /* Pseudo modifiers for parameters */
 #ifndef IN
 #define IN
@@ -66,12 +60,6 @@ extern "C" {
 
 #define RESTRICTED_POINTER
 
-#if defined(_WIN64)
-#define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
-#else
-#define POINTER_ALIGNMENT
-#endif
-
 #define DECLSPEC_ADDRSAFE
 
 #ifdef NONAMELESSUNION
@@ -115,11 +103,6 @@ typedef enum
     IrpForward       // Irp is wmi irp, but targeted at another device object
 } SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
 
-//
-// Forwarder
-//
-struct _COMPRESSED_DATA_INFO;
-
 #define KERNEL_STACK_SIZE                   12288
 #define KERNEL_LARGE_STACK_SIZE             61440
 #define KERNEL_LARGE_STACK_COMMIT           12288
@@ -249,21 +232,14 @@ typedef enum _DPFLTR_TYPE
 
 /* end winnt.h */
 
-#define THREAD_ALERT (0x0004)
-
 /* Exported object types */
 extern POBJECT_TYPE NTSYSAPI ExDesktopObjectType;
-extern POBJECT_TYPE NTSYSAPI ExEventObjectType;
-extern POBJECT_TYPE NTSYSAPI ExSemaphoreObjectType;
 extern POBJECT_TYPE NTSYSAPI ExWindowStationObjectType;
 extern ULONG NTSYSAPI IoDeviceHandlerObjectSize;
 extern POBJECT_TYPE NTSYSAPI IoDeviceHandlerObjectType;
 extern POBJECT_TYPE NTSYSAPI IoDeviceObjectType;
 extern POBJECT_TYPE NTSYSAPI IoDriverObjectType;
-extern POBJECT_TYPE NTSYSAPI IoFileObjectType;
-extern POBJECT_TYPE NTSYSAPI PsThreadType;
 extern POBJECT_TYPE NTSYSAPI LpcPortObjectType;
-extern POBJECT_TYPE NTSYSAPI SeTokenObjectType;
 extern POBJECT_TYPE NTSYSAPI PsProcessType;
 
 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
@@ -279,8 +255,6 @@ extern NTSYSAPI CCHAR KeNumberProcessors; //FIXME: Note to Alex: I won't fix thi
 
 #define MAX_WOW64_SHARED_ENTRIES 16
 
-extern volatile KSYSTEM_TIME KeTickCount;
-
 #define NX_SUPPORT_POLICY_ALWAYSOFF 0
 #define NX_SUPPORT_POLICY_ALWAYSON 1
 #define NX_SUPPORT_POLICY_OPTIN 2
@@ -432,12 +406,6 @@ typedef BOOLEAN
     ASSERT(((E)->Header.Type == NotificationEvent) || \
            ((E)->Header.Type == SynchronizationEvent))
 
-
-typedef enum _TIMER_TYPE {
-  NotificationTimer,
-  SynchronizationTimer
-} TIMER_TYPE;
-
 #define KEYBOARD_INSERT_ON                0x08
 #define KEYBOARD_CAPS_LOCK_ON             0x04
 #define KEYBOARD_NUM_LOCK_ON              0x02
@@ -1236,38 +1204,6 @@ typedef BOOLEAN
     struct _RTL_RANGE *Range
 );
 
-typedef enum _EVENT_TYPE {
-  NotificationEvent,
-  SynchronizationEvent
-} EVENT_TYPE;
-
-typedef struct _KWAIT_BLOCK {
-  LIST_ENTRY  WaitListEntry;
-  struct _KTHREAD * RESTRICTED_POINTER  Thread;
-  PVOID  Object;
-  struct _KWAIT_BLOCK * RESTRICTED_POINTER  NextWaitBlock;
-  USHORT  WaitKey;
-  UCHAR WaitType;
-  UCHAR SpareByte;
-} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
-
-typedef enum _KINTERRUPT_MODE {
-  LevelSensitive,
-  Latched
-} KINTERRUPT_MODE;
-
-#define THREAD_WAIT_OBJECTS 3
-
-typedef VOID
-(DDKAPI *PKINTERRUPT_ROUTINE)(
-  VOID);
-
-typedef enum _CREATE_FILE_TYPE {
-  CreateFileTypeNone,
-  CreateFileTypeNamedPipe,
-  CreateFileTypeMailslot
-} CREATE_FILE_TYPE;
-
 typedef struct _CONFIGURATION_INFORMATION {
   ULONG  DiskCount;
   ULONG  FloppyCount;
@@ -1327,12 +1263,6 @@ typedef enum _CONFIGURATION_TYPE {
   MaximumType
 } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
 
-#define IO_FORCE_ACCESS_CHECK               0x001
-#define IO_NO_PARAMETER_CHECKING            0x100
-
-#define IO_REPARSE                      0x0
-#define IO_REMOUNT                      0x1
-
 typedef NTSTATUS
 (DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
   IN PVOID  Context,
@@ -1354,121 +1284,6 @@ typedef enum _IO_QUERY_DEVICE_DATA_FORMAT {
   IoQueryDeviceMaxData
 } IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT;
 
-typedef enum _KBUGCHECK_CALLBACK_REASON {
-  KbCallbackInvalid,
-  KbCallbackReserved1,
-  KbCallbackSecondaryDumpData,
-  KbCallbackDumpIo,
-} KBUGCHECK_CALLBACK_REASON;
-
-struct _KBUGCHECK_REASON_CALLBACK_RECORD;
-
-typedef VOID
-(DDKAPI *PKBUGCHECK_REASON_CALLBACK_ROUTINE)(
-  IN KBUGCHECK_CALLBACK_REASON  Reason,
-  IN struct _KBUGCHECK_REASON_CALLBACK_RECORD  *Record,
-  IN OUT PVOID  ReasonSpecificData,
-  IN ULONG  ReasonSpecificDataLength);
-
-typedef struct _KBUGCHECK_REASON_CALLBACK_RECORD {
-  LIST_ENTRY  Entry;
-  PKBUGCHECK_REASON_CALLBACK_ROUTINE  CallbackRoutine;
-  PUCHAR  Component;
-  ULONG_PTR  Checksum;
-  KBUGCHECK_CALLBACK_REASON  Reason;
-  UCHAR  State;
-} KBUGCHECK_REASON_CALLBACK_RECORD, *PKBUGCHECK_REASON_CALLBACK_RECORD;
-
-typedef enum _KBUGCHECK_BUFFER_DUMP_STATE {
-  BufferEmpty,
-  BufferInserted,
-  BufferStarted,
-  BufferFinished,
-  BufferIncomplete
-} KBUGCHECK_BUFFER_DUMP_STATE;
-
-typedef VOID
-(DDKAPI *PKBUGCHECK_CALLBACK_ROUTINE)(
-  IN PVOID  Buffer,
-  IN ULONG  Length);
-
-typedef struct _KBUGCHECK_CALLBACK_RECORD {
-  LIST_ENTRY  Entry;
-  PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine;
-  PVOID  Buffer;
-  ULONG  Length;
-  PUCHAR  Component;
-  ULONG_PTR  Checksum;
-  UCHAR  State;
-} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
-
-typedef BOOLEAN
-(DDKAPI *PNMI_CALLBACK)(
-    IN PVOID Context,
-    IN BOOLEAN Handled);
-
-/*
- * VOID
- * KeInitializeCallbackRecord(
- *   IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord)
- */
-#define KeInitializeCallbackRecord(CallbackRecord) \
-  CallbackRecord->State = BufferEmpty;
-
-typedef enum _KDPC_IMPORTANCE {
-  LowImportance,
-  MediumImportance,
-  HighImportance
-} KDPC_IMPORTANCE;
-
-typedef enum _MEMORY_CACHING_TYPE_ORIG {
-  MmFrameBufferCached = 2
-} MEMORY_CACHING_TYPE_ORIG;
-
-typedef enum _MEMORY_CACHING_TYPE {
-  MmNonCached = FALSE,
-  MmCached = TRUE,
-  MmWriteCombined = MmFrameBufferCached,
-  MmHardwareCoherentCached,
-  MmNonCachedUnordered,
-  MmUSWCCached,
-  MmMaximumCacheType
-} MEMORY_CACHING_TYPE;
-
-typedef enum _MM_PAGE_PRIORITY {
-  LowPagePriority,
-  NormalPagePriority = 16,
-  HighPagePriority = 32
-} MM_PAGE_PRIORITY;
-
-typedef enum _LOCK_OPERATION {
-  IoReadAccess,
-  IoWriteAccess,
-  IoModifyAccess
-} LOCK_OPERATION;
-
-#define FLUSH_MULTIPLE_MAXIMUM 32
-
-typedef enum _MM_SYSTEM_SIZE {
-  MmSmallSystem,
-  MmMediumSystem,
-  MmLargeSystem
-} MM_SYSTEMSIZE;
-
-typedef struct _OBJECT_HANDLE_INFORMATION {
-  ULONG HandleAttributes;
-  ACCESS_MASK GrantedAccess;
-} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
-
-typedef struct _CLIENT_ID {
-  HANDLE  UniqueProcess;
-  HANDLE  UniqueThread;
-} CLIENT_ID, *PCLIENT_ID;
-
-typedef VOID
-(DDKAPI *PKSTART_ROUTINE)(
-  IN PVOID  StartContext);
-
 typedef VOID
 (DDKAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)(
   IN HANDLE  ParentId,
@@ -1689,190 +1504,6 @@ typedef struct _PROCESS_SESSION_INFORMATION
     ULONG SessionId;
 } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
 
-typedef VOID
-(DDKAPI *PREQUEST_POWER_COMPLETE)(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN UCHAR  MinorFunction,
-  IN POWER_STATE  PowerState,
-  IN PVOID  Context,
-  IN PIO_STATUS_BLOCK  IoStatus);
-
-typedef enum _TRACE_INFORMATION_CLASS {
-  TraceIdClass,
-  TraceHandleClass,
-  TraceEnableFlagsClass,
-  TraceEnableLevelClass,
-  GlobalLoggerHandleClass,
-  EventLoggerHandleClass,
-  AllLoggerHandlesClass,
-  TraceHandleByNameClass
-} TRACE_INFORMATION_CLASS;
-
-typedef enum _REG_NOTIFY_CLASS
-{
-  RegNtDeleteKey,
-  RegNtPreDeleteKey = RegNtDeleteKey,
-  RegNtSetValueKey,
-  RegNtPreSetValueKey = RegNtSetValueKey,
-  RegNtDeleteValueKey,
-  RegNtPreDeleteValueKey = RegNtDeleteValueKey,
-  RegNtSetInformationKey,
-  RegNtPreSetInformationKey = RegNtSetInformationKey,
-  RegNtRenameKey,
-  RegNtPreRenameKey = RegNtRenameKey,
-  RegNtEnumerateKey,
-  RegNtPreEnumerateKey = RegNtEnumerateKey,
-  RegNtEnumerateValueKey,
-  RegNtPreEnumerateValueKey = RegNtEnumerateValueKey,
-  RegNtQueryKey,
-  RegNtPreQueryKey = RegNtQueryKey,
-  RegNtQueryValueKey,
-  RegNtPreQueryValueKey = RegNtQueryValueKey,
-  RegNtQueryMultipleValueKey,
-  RegNtPreQueryMultipleValueKey = RegNtQueryMultipleValueKey,
-  RegNtPreCreateKey,
-  RegNtPostCreateKey,
-  RegNtPreOpenKey,
-  RegNtPostOpenKey,
-  RegNtKeyHandleClose,
-  RegNtPreKeyHandleClose = RegNtKeyHandleClose,
-  RegNtPostDeleteKey,
-  RegNtPostSetValueKey,
-  RegNtPostDeleteValueKey,
-  RegNtPostSetInformationKey,
-  RegNtPostRenameKey,
-  RegNtPostEnumerateKey,
-  RegNtPostEnumerateValueKey,
-  RegNtPostQueryKey,
-  RegNtPostQueryValueKey,
-  RegNtPostQueryMultipleValueKey,
-  RegNtPostKeyHandleClose,
-  RegNtPreCreateKeyEx,
-  RegNtPostCreateKeyEx,
-  RegNtPreOpenKeyEx,
-  RegNtPostOpenKeyEx
-} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS;
-
-typedef NTSTATUS
-(NTAPI *PEX_CALLBACK_FUNCTION)(
-    IN PVOID CallbackContext,
-    IN PVOID Argument1,
-    IN PVOID Argument2
-);
-
-typedef struct _REG_DELETE_KEY_INFORMATION
-{
-    PVOID Object;
-} REG_DELETE_KEY_INFORMATION, *PREG_DELETE_KEY_INFORMATION;
-
-typedef struct _REG_SET_VALUE_KEY_INFORMATION
-{
-    PVOID Object;
-    PUNICODE_STRING ValueName;
-    ULONG TitleIndex;
-    ULONG Type;
-    PVOID Data;
-    ULONG DataSize;
-} REG_SET_VALUE_KEY_INFORMATION, *PREG_SET_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_DELETE_VALUE_KEY_INFORMATION
-{
-    PVOID Object;
-    PUNICODE_STRING ValueName;
-} REG_DELETE_VALUE_KEY_INFORMATION, *PREG_DELETE_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_SET_INFORMATION_KEY_INFORMATION
-{
-    PVOID Object;
-    KEY_SET_INFORMATION_CLASS KeySetInformationClass;
-    PVOID KeySetInformation;
-    ULONG KeySetInformationLength;
-} REG_SET_INFORMATION_KEY_INFORMATION, *PREG_SET_INFORMATION_KEY_INFORMATION;
-
-typedef struct _REG_ENUMERATE_KEY_INFORMATION
-{
-    PVOID Object;
-    ULONG Index;
-    KEY_INFORMATION_CLASS KeyInformationClass;
-    PVOID KeyInformation;
-    ULONG Length;
-    PULONG ResultLength;
-} REG_ENUMERATE_KEY_INFORMATION, *PREG_ENUMERATE_KEY_INFORMATION;
-
-typedef struct _REG_ENUMERATE_VALUE_KEY_INFORMATION
-{
-    PVOID Object;
-    ULONG Index;
-    KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
-    PVOID KeyValueInformation;
-    ULONG Length;
-    PULONG ResultLength;
-} REG_ENUMERATE_VALUE_KEY_INFORMATION, *PREG_ENUMERATE_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_QUERY_KEY_INFORMATION
-{
-    PVOID Object;
-    KEY_INFORMATION_CLASS KeyInformationClass;
-    PVOID KeyInformation;
-    ULONG Length;
-    PULONG ResultLength;
-} REG_QUERY_KEY_INFORMATION, *PREG_QUERY_KEY_INFORMATION;
-
-typedef struct _REG_QUERY_VALUE_KEY_INFORMATION
-{
-    PVOID Object;
-    PUNICODE_STRING ValueName;
-    KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass;
-    PVOID KeyValueInformation;
-    ULONG Length;
-    PULONG ResultLength;
-} REG_QUERY_VALUE_KEY_INFORMATION, *PREG_QUERY_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION
-{
-    PVOID Object;
-    PKEY_VALUE_ENTRY ValueEntries;
-    ULONG EntryCount;
-    PVOID ValueBuffer;
-    PULONG BufferLength;
-    PULONG RequiredBufferLength;
-} REG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION, *PREG_QUERY_MULTIPLE_VALUE_KEY_INFORMATION;
-
-typedef struct _REG_PRE_CREATE_KEY_INFORMATION
-{
-    PUNICODE_STRING CompleteName;
-} REG_PRE_CREATE_KEY_INFORMATION, *PREG_PRE_CREATE_KEY_INFORMATION;
-
-typedef struct _REG_POST_CREATE_KEY_INFORMATION
-{
-    PUNICODE_STRING CompleteName;
-    PVOID Object;
-    NTSTATUS Status;
-} REG_POST_CREATE_KEY_INFORMATION, *PREG_POST_CREATE_KEY_INFORMATION;
-
-typedef struct _REG_PRE_OPEN_KEY_INFORMATION
-{
-    PUNICODE_STRING  CompleteName;
-} REG_PRE_OPEN_KEY_INFORMATION, *PREG_PRE_OPEN_KEY_INFORMATION;
-
-typedef struct _REG_POST_OPEN_KEY_INFORMATION
-{
-    PUNICODE_STRING CompleteName;
-    PVOID Object;
-    NTSTATUS Status;
-} REG_POST_OPEN_KEY_INFORMATION, *PREG_POST_OPEN_KEY_INFORMATION;
-
-typedef struct _REG_POST_OPERATION_INFORMATION
-{
-    PVOID Object;
-    NTSTATUS Status;
-} REG_POST_OPERATION_INFORMATION,*PREG_POST_OPERATION_INFORMATION;
-
-typedef struct _REG_KEY_HANDLE_CLOSE_INFORMATION
-{
-    PVOID Object;
-} REG_KEY_HANDLE_CLOSE_INFORMATION, *PREG_KEY_HANDLE_CLOSE_INFORMATION;
-
 /*
 ** Storage structures
 */
@@ -1917,14 +1548,6 @@ typedef VOID
   IN HANDLE  ThreadId,
   IN KPROCESSOR_MODE  Mode);
 
-#define DBG_STATUS_CONTROL_C              1
-#define DBG_STATUS_SYSRQ                  2
-#define DBG_STATUS_BUGCHECK_FIRST         3
-#define DBG_STATUS_BUGCHECK_SECOND        4
-#define DBG_STATUS_FATAL                  5
-#define DBG_STATUS_DEBUG_CONTROL          6
-#define DBG_STATUS_WORKER                 7
-
 typedef struct _PHYSICAL_MEMORY_RANGE {
   PHYSICAL_ADDRESS  BaseAddress;
   LARGE_INTEGER  NumberOfBytes;
@@ -1945,28 +1568,12 @@ typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
 #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS      0x0008
 #define DRIVER_VERIFIER_IO_CHECKING                 0x0010
 
-#define HASH_STRING_ALGORITHM_DEFAULT     0
-#define HASH_STRING_ALGORITHM_X65599      1
-#define HASH_STRING_ALGORITHM_INVALID     0xffffffff
-
 typedef VOID
 (DDKAPI *PTIMER_APC_ROUTINE)(
   IN PVOID  TimerContext,
   IN ULONG  TimerLowValue,
   IN LONG  TimerHighValue);
 
-
-
-/*
-** WMI structures
-*/
-
-typedef VOID
-(DDKAPI *WMI_NOTIFICATION_CALLBACK)(
-  PVOID  Wnode,
-  PVOID  Context);
-
-
 /*
 ** Architecture specific structures
 */
@@ -1985,7 +1592,6 @@ typedef VOID
 #define CONTEXT_DEBUG_REGISTERS        (CONTEXT_i386|0x00000010L)
 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
 #define CONTEXT_FULL   (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
-#define MAXIMUM_SUPPORTED_EXTENSION  512
 
 typedef struct _FLOATING_SAVE_AREA {
     ULONG ControlWord;
@@ -2027,24 +1633,6 @@ typedef struct _CONTEXT {
     UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
 } CONTEXT;
 
-//
-// Used to contain PFNs and PFN counts
-//
-typedef ULONG PFN_COUNT;
-typedef ULONG PFN_NUMBER, *PPFN_NUMBER;
-typedef LONG SPFN_NUMBER, *PSPFN_NUMBER;
-
-#define PASSIVE_LEVEL                      0
-#define LOW_LEVEL                          0
-#define APC_LEVEL                          1
-#define DISPATCH_LEVEL                     2
-#define PROFILE_LEVEL                     27
-#define CLOCK1_LEVEL                      28
-#define CLOCK2_LEVEL                      28
-#define IPI_LEVEL                         29
-#define POWER_LEVEL                       30
-#define HIGH_LEVEL                        31
-
 typedef struct _KPCR_TIB {
   PVOID  ExceptionList;         /* 00 */
   PVOID  StackBase;             /* 04 */
@@ -2086,17 +1674,6 @@ typedef struct _KPCR {
 
 #define KeGetPcr()                      PCR
 
-typedef struct _KFLOATING_SAVE {
-  ULONG  ControlWord;
-  ULONG  StatusWord;
-  ULONG  ErrorOffset;
-  ULONG  ErrorSelector;
-  ULONG  DataOffset;
-  ULONG  DataSelector;
-  ULONG  Cr0NpxState;
-  ULONG  Spare1;
-} KFLOATING_SAVE, *PKFLOATING_SAVE;
-
 FORCEINLINE
 ULONG
 KeGetCurrentProcessorNumber(VOID)
@@ -2104,25 +1681,6 @@ KeGetCurrentProcessorNumber(VOID)
     return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number));
 }
 
-NTHALAPI
-KIRQL
-DDKAPI
-KeGetCurrentIrql(
-    VOID);
-
-NTKERNELAPI
-PRKTHREAD
-NTAPI
-KeGetCurrentThread(
-    VOID);
-
-#define KI_USER_SHARED_DATA               0xffdf0000
-
-#define PAGE_SIZE                         0x1000
-#define PAGE_SHIFT                        12L
-
-#define SharedUserData                    ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
-
 extern NTKERNELAPI PVOID MmHighestUserAddress;
 extern NTKERNELAPI PVOID MmSystemRangeStart;
 extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
@@ -2155,30 +1713,6 @@ extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
 #define CONTEXT_EXCEPTION_REPORTING 0x80000000
 #endif
 
-typedef struct DECLSPEC_ALIGN(16) _M128A {
-    ULONGLONG Low;
-    LONGLONG High;
-} M128A, *PM128A;
-
-typedef struct _XMM_SAVE_AREA32 {
-    USHORT ControlWord;
-    USHORT StatusWord;
-    UCHAR TagWord;
-    UCHAR Reserved1;
-    USHORT ErrorOpcode;
-    ULONG ErrorOffset;
-    USHORT ErrorSelector;
-    USHORT Reserved2;
-    ULONG DataOffset;
-    USHORT DataSelector;
-    USHORT Reserved3;
-    ULONG MxCsr;
-    ULONG MxCsr_Mask;
-    M128A FloatRegisters[8];
-    M128A XmmRegisters[16];
-    UCHAR Reserved4[96];
-} XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
-
 typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
     ULONG64 P1Home;
     ULONG64 P2Home;
@@ -2266,23 +1800,6 @@ typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
     ULONG64 LastExceptionFromRip;
 } CONTEXT;
 
-//
-// Used to contain PFNs and PFN counts
-//
-typedef ULONG PFN_COUNT;
-typedef ULONG64 PFN_NUMBER, *PPFN_NUMBER;
-typedef LONG64 SPFN_NUMBER, *PSPFN_NUMBER;
-
-#define PASSIVE_LEVEL                      0
-#define LOW_LEVEL                          0
-#define APC_LEVEL                          1
-#define DISPATCH_LEVEL                     2
-#define CLOCK_LEVEL                       13
-#define IPI_LEVEL                         14
-#define POWER_LEVEL                       14
-#define PROFILE_LEVEL                     15
-#define HIGH_LEVEL                        15
-
 #define PAGE_SIZE   0x1000
 #define PAGE_SHIFT 12L
 #define PTI_SHIFT  12L
@@ -2371,12 +1888,6 @@ typedef struct _KFLOATING_SAVE {
   ULONG Dummy;
 } KFLOATING_SAVE, *PKFLOATING_SAVE;
 
-NTKERNELAPI
-PRKTHREAD
-NTAPI
-KeGetCurrentThread(
-    VOID);
-
 FORCEINLINE
 PKPCR
 KeGetPcr(VOID)
@@ -2516,18 +2027,6 @@ 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)
-
-#define RESULT_NEGATIVE                   ((EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
-#define RESULT_ZERO                       ((~EFLAG_SIGN & EFLAG_ZERO) & EFLAG_SELECT)
-#define RESULT_POSITIVE                   ((~EFLAG_SIGN & ~EFLAG_ZERO) & EFLAG_SELECT)
-
 typedef enum _INTERLOCKED_RESULT {
   ResultNegative = RESULT_NEGATIVE,
   ResultZero = RESULT_ZERO,
@@ -2578,20 +2077,6 @@ typedef struct _PCIBUSDATA
 
 /** SPINLOCK FUNCTIONS ********************************************************/
 
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-KeTryToAcquireSpinLockAtDpcLevel(
-    IN OUT PKSPIN_LOCK SpinLock
-);
-
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-KeTestSpinLock(
-    IN PKSPIN_LOCK SpinLock
-);
-
 #if defined (_X86_)
 
 #if defined(WIN9X_COMPAT_SPINLOCK)
@@ -2732,263 +2217,9 @@ KeAcquireSpinLockRaiseToDpc(
     
 #endif // !defined (_X86_)
 
-/*
-** Utillity functions
-*/
-
 #define ARGUMENT_PRESENT(ArgumentPointer) \
   ((CHAR*)((ULONG_PTR)(ArgumentPointer)) != (CHAR*)NULL)
 
-/*
- * ULONG
- * BYTE_OFFSET(
- *   IN PVOID  Va)
- */
-#define BYTE_OFFSET(Va) \
-  ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
-
-/*
- * ULONG
- * BYTES_TO_PAGES(
- *   IN ULONG  Size)
- */
-#define BYTES_TO_PAGES(Size) \
-  ((ULONG) ((ULONG_PTR) (Size) >> PAGE_SHIFT) + (((ULONG) (Size) & (PAGE_SIZE - 1)) != 0))
-
-/*
- * PVOID
- * PAGE_ALIGN(
- *   IN PVOID  Va)
- */
-#define PAGE_ALIGN(Va) \
-  ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
-
-/*
- * ULONG_PTR
- * ROUND_TO_PAGES(
- *   IN ULONG_PTR  Size)
- */
-#define ROUND_TO_PAGES(Size) \
-  ((ULONG_PTR) (((ULONG_PTR) Size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)))
-
-
-
-#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( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
-
-#define ASSERTMSG(msg, exp) \
-  (VOID)((!(exp)) ? \
-    RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, msg ), FALSE : TRUE)
-
-#define RTL_SOFT_ASSERT(exp) \
-  (VOID)((!(exp)) ? \
-    DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n", __FILE__, __LINE__, #exp), FALSE : TRUE)
-
-#define RTL_SOFT_ASSERTMSG(msg, exp) \
-  (VOID)((!(exp)) ? \
-    DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n   Message: %s\n", __FILE__, __LINE__, #exp, (msg)), FALSE : TRUE)
-
-#define RTL_VERIFY(exp) ASSERT(exp)
-#define RTL_VERIFYMSG(msg, exp) ASSERT(msg, exp)
-
-#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)
-#define ASSERTMSG(msg, exp) ((VOID) 0)
-
-#define RTL_SOFT_ASSERT(exp) ((VOID) 0)
-#define RTL_SOFT_ASSERTMSG(msg, exp) ((VOID) 0)
-
-#define RTL_VERIFY(exp) ((exp) ? TRUE : FALSE)
-#define RTL_VERIFYMSG(msg, exp) ((exp) ? TRUE : FALSE)
-
-#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 */
-#if defined(_NTSYSTEM_) || defined(__GNUC__)
-#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
-#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
-#else
-#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
-#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
-#endif /* _NT_SYSTEM */
-
-extern BOOLEAN NTSYSAPI NLS_MB_CODE_PAGE_TAG;
-extern BOOLEAN NTSYSAPI NLS_MB_OEM_CODE_PAGE_TAG;
-
-/*
-** Driver support routines
-*/
-
-/** Runtime library routines **/
-
-static __inline VOID
-InitializeListHead(
-  IN PLIST_ENTRY  ListHead)
-{
-  ListHead->Flink = ListHead->Blink = ListHead;
-}
-
-static __inline VOID
-InsertHeadList(
-  IN PLIST_ENTRY  ListHead,
-  IN PLIST_ENTRY  Entry)
-{
-  PLIST_ENTRY OldFlink;
-  OldFlink = ListHead->Flink;
-  Entry->Flink = OldFlink;
-  Entry->Blink = ListHead;
-  OldFlink->Blink = Entry;
-  ListHead->Flink = Entry;
-}
-
-static __inline VOID
-InsertTailList(
-  IN PLIST_ENTRY  ListHead,
-  IN PLIST_ENTRY  Entry)
-{
-  PLIST_ENTRY OldBlink;
-  OldBlink = ListHead->Blink;
-  Entry->Flink = ListHead;
-  Entry->Blink = OldBlink;
-  OldBlink->Flink = Entry;
-  ListHead->Blink = Entry;
-}
-
-/*
- * BOOLEAN
- * IsListEmpty(
- *   IN PLIST_ENTRY  ListHead)
- */
-#define IsListEmpty(_ListHead) \
-  ((_ListHead)->Flink == (_ListHead))
-
-/*
- * PSINGLE_LIST_ENTRY
- * PopEntryList(
- *   IN PSINGLE_LIST_ENTRY  ListHead)
- */
-#define PopEntryList(ListHead) \
-  (ListHead)->Next; \
-  { \
-    PSINGLE_LIST_ENTRY _FirstEntry; \
-    _FirstEntry = (ListHead)->Next; \
-    if (_FirstEntry != NULL) \
-      (ListHead)->Next = _FirstEntry->Next; \
-  }
-
-/*
- * VOID
- * PushEntryList(
- *   IN PSINGLE_LIST_ENTRY  ListHead,
- *   IN PSINGLE_LIST_ENTRY  Entry)
- */
-#define PushEntryList(_ListHead, _Entry) \
-       (_Entry)->Next = (_ListHead)->Next; \
-       (_ListHead)->Next = (_Entry); \
-
-static __inline BOOLEAN
-RemoveEntryList(
-  IN PLIST_ENTRY  Entry)
-{
-  PLIST_ENTRY OldFlink;
-  PLIST_ENTRY OldBlink;
-
-  OldFlink = Entry->Flink;
-  OldBlink = Entry->Blink;
-  OldFlink->Blink = OldBlink;
-  OldBlink->Flink = OldFlink;
-  return (BOOLEAN)(OldFlink == OldBlink);
-}
-
-static __inline PLIST_ENTRY
-RemoveHeadList(
-  IN PLIST_ENTRY  ListHead)
-{
-  PLIST_ENTRY Flink;
-  PLIST_ENTRY Entry;
-
-  Entry = ListHead->Flink;
-  Flink = Entry->Flink;
-  ListHead->Flink = Flink;
-  Flink->Blink = ListHead;
-  return Entry;
-}
-
-static __inline PLIST_ENTRY
-RemoveTailList(
-  IN PLIST_ENTRY  ListHead)
-{
-  PLIST_ENTRY Blink;
-  PLIST_ENTRY Entry;
-
-  Entry = ListHead->Blink;
-  Blink = Entry->Blink;
-  ListHead->Blink = Blink;
-  Blink->Flink = ListHead;
-  return Entry;
-}
-
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -3140,88 +2371,6 @@ RtlWalkFrameChain(
   IN ULONG  Count,
   IN ULONG  Flags);
 
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeAreAllApcsDisabled(
-    VOID
-);
-
-/* Guarded Mutex routines */
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireGuardedMutex(
-    IN OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireGuardedMutexUnsafe(
-    IN OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeEnterGuardedRegion(
-    VOID
-);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeLeaveGuardedRegion(
-    VOID
-);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeInitializeGuardedMutex(
-    OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeReleaseGuardedMutexUnsafe(
-    IN OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeReleaseGuardedMutex(
-    IN OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-NTKERNELAPI
-BOOLEAN
-FASTCALL
-KeTryToAcquireGuardedMutex(
-    IN OUT PKGUARDED_MUTEX GuardedMutex
-);
-
-/* Fast Mutex */
-#define ExInitializeFastMutex(_FastMutex) \
-{ \
-    (_FastMutex)->Count = FM_LOCK_BIT; \
-    (_FastMutex)->Owner = NULL; \
-    (_FastMutex)->Contention = 0; \
-    KeInitializeEvent(&(_FastMutex)->Gate, SynchronizationEvent, FALSE); \
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeEvent(
-  IN PRKEVENT  Event,
-  IN EVENT_TYPE  Type,
-  IN BOOLEAN  State);
-
 /******************************************************************************
  *                            Executive Types                                 *
  ******************************************************************************/
@@ -3307,16 +2456,6 @@ ExInterlockedExtendZone(
 #define ExInterlockedFreeToZone(Zone, Block, Lock) \
     ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock)
 
-/*
- * VOID
- * InitializeSListHead(
- *   IN PSLIST_HEADER  SListHead)
- */
-#define InitializeSListHead(_SListHead) \
-       (_SListHead)->Alignment = 0
-
-#define ExInitializeSListHead InitializeSListHead
-
 /*
  * BOOLEAN
  * ExIsFullZone(
@@ -3365,58 +2504,6 @@ ExUuidCreate(
 #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
 #define ExReleaseResourceForThread ExReleaseResourceForThreadLite
 
-
-#if 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
-
-NTKERNELAPI
-VOID
-NTAPI
-ProbeForRead(
-  IN CONST VOID  *Address,
-  IN SIZE_T  Length,
-  IN ULONG  Alignment);
-
-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
@@ -3425,8 +2512,6 @@ NTAPI
 FsRtlIsTotalDeviceFailure(
   IN NTSTATUS  Status);
 
-
-
 /** Hardware abstraction layer routines **/
 
 NTHALAPI
@@ -3450,2288 +2535,339 @@ HalPutDmaAdapter(
     PADAPTER_OBJECT AdapterObject
 );
 
+/** I/O manager routines **/
 
-/** Io access routines **/
-
-#if !defined(_M_AMD64)
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_UCHAR(
-  IN PUCHAR  Port,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_ULONG(
-  IN PULONG  Port,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-VOID
-NTAPI
-READ_PORT_BUFFER_USHORT(
-  IN PUSHORT  Port,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
-
-NTHALAPI
-UCHAR
-NTAPI
-READ_PORT_UCHAR(
-  IN PUCHAR  Port);
-
-NTHALAPI
-ULONG
-NTAPI
-READ_PORT_ULONG(
-  IN PULONG  Port);
-
-NTHALAPI
-USHORT
-NTAPI
-READ_PORT_USHORT(
-  IN PUSHORT  Port);
-
+#ifndef DMA_MACROS_DEFINED
 NTKERNELAPI
-VOID
+NTSTATUS
 NTAPI
-READ_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
+IoAllocateAdapterChannel(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG NumberOfMapRegisters,
+    IN PDRIVER_CONTROL ExecutionRoutine,
+    IN PVOID Context);
+#endif
 
 NTKERNELAPI
 VOID
 NTAPI
-READ_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
+IoAllocateController(
+  IN PCONTROLLER_OBJECT  ControllerObject,
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN PDRIVER_CONTROL  ExecutionRoutine,
+  IN PVOID  Context);
+
+/*
+ * VOID IoAssignArcName(
+ *   IN PUNICODE_STRING  ArcName,
+ *   IN PUNICODE_STRING  DeviceName);
+ */
+#define IoAssignArcName(_ArcName, _DeviceName) ( \
+  IoCreateSymbolicLink((_ArcName), (_DeviceName)))
 
 NTKERNELAPI
 VOID
 NTAPI
-READ_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
+IoCancelFileOpen(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN PFILE_OBJECT  FileObject);
 
 NTKERNELAPI
-UCHAR
+PCONTROLLER_OBJECT
 NTAPI
-READ_REGISTER_UCHAR(
-  IN PUCHAR  Register);
+IoCreateController(
+  IN ULONG  Size);
 
 NTKERNELAPI
-ULONG
+NTSTATUS
 NTAPI
-READ_REGISTER_ULONG(
-  IN PULONG  Register);
+IoCreateDisk(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN PCREATE_DISK  Disk);
 
 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);
+IoDeleteController(
+  IN PCONTROLLER_OBJECT  ControllerObject);
 
-NTHALAPI
-VOID
-NTAPI
-WRITE_PORT_BUFFER_USHORT(
-  IN PUSHORT  Port,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
+/*
+ * VOID
+ * IoDeassignArcName(
+ *   IN PUNICODE_STRING  ArcName)
+ */
+#define IoDeassignArcName IoDeleteSymbolicLink
 
-NTHALAPI
+NTKERNELAPI
 VOID
 NTAPI
-WRITE_PORT_UCHAR(
-  IN PUCHAR  Port,
-  IN UCHAR  Value);
+IoFreeController(
+  IN PCONTROLLER_OBJECT  ControllerObject);
 
-NTHALAPI
-VOID
+NTKERNELAPI
+PCONFIGURATION_INFORMATION
 NTAPI
-WRITE_PORT_ULONG(
-  IN PULONG  Port,
-  IN ULONG  Value);
+IoGetConfigurationInformation(
+  VOID);
 
-NTHALAPI
-VOID
+NTKERNELAPI
+PDEVICE_OBJECT
 NTAPI
-WRITE_PORT_USHORT(
-  IN PUSHORT  Port,
-  IN USHORT  Value);
+IoGetDeviceToVerify(
+  IN PETHREAD  Thread);
 
 NTKERNELAPI
-VOID
+PGENERIC_MAPPING
 NTAPI
-WRITE_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count);
+IoGetFileObjectGenericMapping(
+  VOID);
 
 NTKERNELAPI
-VOID
+PIRP
 NTAPI
-WRITE_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count);
+IoMakeAssociatedIrp(
+  IN PIRP  Irp,
+  IN CCHAR  StackSize);
 
 NTKERNELAPI
-VOID
+NTSTATUS
 NTAPI
-WRITE_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count);
+IoQueryDeviceDescription(
+  IN PINTERFACE_TYPE  BusType  OPTIONAL,
+  IN PULONG  BusNumber  OPTIONAL,
+  IN PCONFIGURATION_TYPE  ControllerType  OPTIONAL,
+  IN PULONG  ControllerNumber  OPTIONAL,
+  IN PCONFIGURATION_TYPE  PeripheralType  OPTIONAL,
+  IN PULONG  PeripheralNumber  OPTIONAL,
+  IN PIO_QUERY_DEVICE_ROUTINE  CalloutRoutine,
+  IN PVOID  Context);
 
 NTKERNELAPI
 VOID
 NTAPI
-WRITE_REGISTER_UCHAR(
-  IN PUCHAR  Register,
-  IN UCHAR  Value);
+IoRaiseHardError(
+  IN PIRP  Irp,
+  IN PVPB  Vpb  OPTIONAL,
+  IN PDEVICE_OBJECT  RealDeviceObject);
 
 NTKERNELAPI
-VOID
+BOOLEAN
 NTAPI
-WRITE_REGISTER_ULONG(
-  IN PULONG  Register,
-  IN ULONG  Value);
+IoRaiseInformationalHardError(
+  IN NTSTATUS  ErrorStatus,
+  IN PUNICODE_STRING  String  OPTIONAL,
+  IN PKTHREAD  Thread  OPTIONAL);
 
 NTKERNELAPI
-VOID
+NTSTATUS
 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
-VOID
-READ_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count)
-{
-    __movsb(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count)
-{
-    __movsd(Register, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-READ_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count)
-{
-    __movsw(Register, Buffer, Count);
-}
-
-FORCEINLINE
-UCHAR
-READ_REGISTER_UCHAR(
-  IN PUCHAR Register)
-{
-    return *Register;
-}
-
-FORCEINLINE
-ULONG
-READ_REGISTER_ULONG(
-  IN PULONG Register)
-{
-    return *Register;
-}
-
-FORCEINLINE
-USHORT
-READ_REGISTER_USHORT(
-  IN PUSHORT Register)
-{
-    return *Register;
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_UCHAR(
-  IN PUCHAR  Port,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count)
-{
-    __outbytestring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_ULONG(
-  IN PULONG  Port,
-  IN PULONG  Buffer,
-  IN ULONG  Count)
-{
-    __outdwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_BUFFER_USHORT(
-  IN PUSHORT  Port,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count)
-{
-    __outwordstring((USHORT)(ULONG_PTR)Port, Buffer, Count);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_UCHAR(
-  IN PUCHAR  Port,
-  IN UCHAR  Value)
-{
-    __outbyte((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_ULONG(
-  IN PULONG  Port,
-  IN ULONG  Value)
-{
-    __outdword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_PORT_USHORT(
-  IN PUSHORT  Port,
-  IN USHORT  Value)
-{
-    __outword((USHORT)(ULONG_PTR)Port, Value);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_UCHAR(
-  IN PUCHAR  Register,
-  IN PUCHAR  Buffer,
-  IN ULONG  Count)
-{
-    LONG Synch;
-    __movsb(Register, Buffer, Count);
-    InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_ULONG(
-  IN PULONG  Register,
-  IN PULONG  Buffer,
-  IN ULONG  Count)
-{
-    LONG Synch;
-    __movsd(Register, Buffer, Count);
-    InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_BUFFER_USHORT(
-  IN PUSHORT  Register,
-  IN PUSHORT  Buffer,
-  IN ULONG  Count)
-{
-    LONG Synch;
-    __movsw(Register, Buffer, Count);
-    InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_UCHAR(
-  IN PUCHAR  Register,
-  IN UCHAR  Value)
-{
-    LONG Synch;
-    *Register = Value;
-    InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_ULONG(
-  IN PULONG  Register,
-  IN ULONG  Value)
-{
-    LONG Synch;
-    *Register = Value;
-    InterlockedOr(&Synch, 1);
-}
-
-FORCEINLINE
-VOID
-WRITE_REGISTER_USHORT(
-  IN PUSHORT  Register,
-  IN USHORT  Value)
-{
-       LONG Sync;
-       *Register = Value;
-       InterlockedOr(&Sync, 1);
-}
-
-#endif
-
-/** I/O manager routines **/
-
-NTKERNELAPI
-VOID
-NTAPI
-IoAcquireCancelSpinLock(
-  OUT PKIRQL  Irql);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAcquireRemoveLockEx(
-  IN PIO_REMOVE_LOCK  RemoveLock,
-  IN OPTIONAL PVOID  Tag  OPTIONAL,
-  IN PCSTR  File,
-  IN ULONG  Line,
-  IN ULONG  RemlockSize);
-
-/*
- * NTSTATUS
- * IoAcquireRemoveLock(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN OPTIONAL PVOID  Tag)
- */
-#define IoAcquireRemoveLock(_RemoveLock, \
-                            _Tag) \
-  IoAcquireRemoveLockEx(_RemoveLock, _Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
-
-/*
- * VOID
- * IoAdjustPagingPathCount(
- *   IN PLONG  Count,
- *   IN BOOLEAN  Increment)
- */
-#define IoAdjustPagingPathCount(_Count, \
-                                _Increment) \
-{ \
-  if (_Increment) \
-    { \
-      InterlockedIncrement(_Count); \
-    } \
-  else \
-    { \
-      InterlockedDecrement(_Count); \
-    } \
-}
-
-#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
-IoAllocateController(
-  IN PCONTROLLER_OBJECT  ControllerObject,
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PDRIVER_CONTROL  ExecutionRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAllocateDriverObjectExtension(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PVOID  ClientIdentificationAddress,
-  IN ULONG  DriverObjectExtensionSize,
-  OUT PVOID  *DriverObjectExtension);
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoAllocateErrorLogEntry(
-  IN PVOID  IoObject,
-  IN UCHAR  EntrySize);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoAllocateIrp(
-  IN CCHAR  StackSize,
-  IN BOOLEAN  ChargeQuota);
-
-NTKERNELAPI
-PMDL
-NTAPI
-IoAllocateMdl(
-  IN PVOID  VirtualAddress,
-  IN ULONG  Length,
-  IN BOOLEAN  SecondaryBuffer,
-  IN BOOLEAN  ChargeQuota,
-  IN OUT PIRP  Irp  OPTIONAL);
-
-NTKERNELAPI
-PIO_WORKITEM
-NTAPI
-IoAllocateWorkItem(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-/*
- * VOID IoAssignArcName(
- *   IN PUNICODE_STRING  ArcName,
- *   IN PUNICODE_STRING  DeviceName);
- */
-#define IoAssignArcName(_ArcName, _DeviceName) ( \
-  IoCreateSymbolicLink((_ArcName), (_DeviceName)))
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoAttachDevice(
-  IN PDEVICE_OBJECT  SourceDevice,
-  IN PUNICODE_STRING  TargetDevice,
-  OUT PDEVICE_OBJECT  *AttachedDevice);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoAttachDeviceToDeviceStack(
-  IN PDEVICE_OBJECT  SourceDevice,
-  IN PDEVICE_OBJECT  TargetDevice);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildAsynchronousFsdRequest(
-  IN ULONG  MajorFunction,
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN OUT PVOID  Buffer  OPTIONAL,
-  IN ULONG  Length  OPTIONAL,
-  IN PLARGE_INTEGER  StartingOffset  OPTIONAL,
-  IN PIO_STATUS_BLOCK  IoStatusBlock  OPTIONAL);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildDeviceIoControlRequest(
-  IN ULONG  IoControlCode,
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PVOID  InputBuffer  OPTIONAL,
-  IN ULONG  InputBufferLength,
-  OUT PVOID  OutputBuffer  OPTIONAL,
-  IN ULONG  OutputBufferLength,
-  IN BOOLEAN  InternalDeviceIoControl,
-  IN PKEVENT  Event,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoBuildPartialMdl(
-  IN PMDL  SourceMdl,
-  IN OUT PMDL  TargetMdl,
-  IN PVOID  VirtualAddress,
-  IN ULONG  Length);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoBuildSynchronousFsdRequest(
-  IN ULONG  MajorFunction,
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN OUT PVOID  Buffer  OPTIONAL,
-  IN ULONG  Length  OPTIONAL,
-  IN PLARGE_INTEGER  StartingOffset  OPTIONAL,
-  IN PKEVENT  Event,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock);
-
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IofCallDriver(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN OUT PIRP  Irp);
-
-/*
- * NTSTATUS
- * IoCallDriver(
- *   IN PDEVICE_OBJECT  DeviceObject,
- *   IN OUT PIRP  Irp)
- */
-#define IoCallDriver IofCallDriver
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCancelFileOpen(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PFILE_OBJECT  FileObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoCancelIrp(
-  IN PIRP  Irp);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCheckShareAccess(
-  IN ACCESS_MASK  DesiredAccess,
-  IN ULONG  DesiredShareAccess,
-  IN OUT PFILE_OBJECT  FileObject,
-  IN OUT PSHARE_ACCESS  ShareAccess,
-  IN BOOLEAN  Update);
-
-NTKERNELAPI
-VOID
-FASTCALL
-IofCompleteRequest(
-  IN PIRP  Irp,
-  IN CCHAR  PriorityBoost);
-
-/*
- * VOID
- * IoCompleteRequest(
- *  IN PIRP  Irp,
- *  IN CCHAR  PriorityBoost)
- */
-#define IoCompleteRequest IofCompleteRequest
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoConnectInterrupt(
-  OUT PKINTERRUPT  *InterruptObject,
-  IN PKSERVICE_ROUTINE  ServiceRoutine,
-  IN PVOID  ServiceContext,
-  IN PKSPIN_LOCK  SpinLock  OPTIONAL,
-  IN ULONG  Vector,
-  IN KIRQL  Irql,
-  IN KIRQL  SynchronizeIrql,
-  IN KINTERRUPT_MODE    InterruptMode,
-  IN BOOLEAN  ShareVector,
-  IN KAFFINITY  ProcessorEnableMask,
-  IN BOOLEAN  FloatingSave);
-
-/*
- * PIO_STACK_LOCATION
- * IoGetCurrentIrpStackLocation(
- *   IN PIRP  Irp)
- */
-#define IoGetCurrentIrpStackLocation(_Irp) \
-  ((_Irp)->Tail.Overlay.CurrentStackLocation)
-
-/*
- * PIO_STACK_LOCATION
- * IoGetNextIrpStackLocation(
- *   IN PIRP  Irp)
- */
-#define IoGetNextIrpStackLocation(_Irp) \
-  ((_Irp)->Tail.Overlay.CurrentStackLocation - 1)
-
-/*
- * VOID
- * IoCopyCurrentIrpStackLocationToNext(
- *   IN PIRP  Irp)
- */
-#define IoCopyCurrentIrpStackLocationToNext(_Irp) \
-{ \
-  PIO_STACK_LOCATION _IrpSp; \
-  PIO_STACK_LOCATION _NextIrpSp; \
-  _IrpSp = IoGetCurrentIrpStackLocation(_Irp); \
-  _NextIrpSp = IoGetNextIrpStackLocation(_Irp); \
-  RtlCopyMemory(_NextIrpSp, _IrpSp, \
-    FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
-  _NextIrpSp->Control = 0; \
-}
-
-NTKERNELAPI
-PCONTROLLER_OBJECT
-NTAPI
-IoCreateController(
-  IN ULONG  Size);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDevice(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN ULONG  DeviceExtensionSize,
-  IN PUNICODE_STRING  DeviceName  OPTIONAL,
-  IN DEVICE_TYPE  DeviceType,
-  IN ULONG  DeviceCharacteristics,
-  IN BOOLEAN  Exclusive,
-  OUT PDEVICE_OBJECT  *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateDisk(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PCREATE_DISK  Disk);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateFile(
-  OUT PHANDLE FileHandle,
-  IN ACCESS_MASK DesiredAccess,
-  IN POBJECT_ATTRIBUTES ObjectAttributes,
-  OUT PIO_STATUS_BLOCK IoStatusBlock,
-  IN PLARGE_INTEGER AllocationSize OPTIONAL,
-  IN ULONG FileAttributes,
-  IN ULONG ShareAccess,
-  IN ULONG Disposition,
-  IN ULONG CreateOptions,
-  IN PVOID EaBuffer OPTIONAL,
-  IN ULONG EaLength,
-  IN CREATE_FILE_TYPE CreateFileType,
-  IN PVOID ExtraCreateParameters OPTIONAL,
-  IN ULONG Options);
-
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateNotificationEvent(
-  IN PUNICODE_STRING  EventName,
-  OUT PHANDLE  EventHandle);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateSymbolicLink(
-  IN PUNICODE_STRING  SymbolicLinkName,
-  IN PUNICODE_STRING  DeviceName);
-
-NTKERNELAPI
-PKEVENT
-NTAPI
-IoCreateSynchronizationEvent(
-  IN PUNICODE_STRING  EventName,
-  OUT PHANDLE  EventHandle);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCreateUnprotectedSymbolicLink(
-  IN PUNICODE_STRING  SymbolicLinkName,
-  IN PUNICODE_STRING  DeviceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoCsqInitialize(
-  PIO_CSQ  Csq,
-  IN PIO_CSQ_INSERT_IRP  CsqInsertIrp,
-  IN PIO_CSQ_REMOVE_IRP  CsqRemoveIrp,
-  IN PIO_CSQ_PEEK_NEXT_IRP  CsqPeekNextIrp,
-  IN PIO_CSQ_ACQUIRE_LOCK  CsqAcquireLock,
-  IN PIO_CSQ_RELEASE_LOCK  CsqReleaseLock,
-  IN PIO_CSQ_COMPLETE_CANCELED_IRP  CsqCompleteCanceledIrp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoCsqInsertIrp(
-  IN  PIO_CSQ  Csq,
-  IN  PIRP  Irp,
-  IN  PIO_CSQ_IRP_CONTEXT  Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveIrp(
-  IN  PIO_CSQ  Csq,
-  IN  PIO_CSQ_IRP_CONTEXT  Context);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoCsqRemoveNextIrp(
-  IN PIO_CSQ  Csq,
-  IN PVOID  PeekContext);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteController(
-  IN PCONTROLLER_OBJECT  ControllerObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDeleteDevice(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoDeleteSymbolicLink(
-  IN PUNICODE_STRING  SymbolicLinkName);
-
-/*
- * VOID
- * IoDeassignArcName(
- *   IN PUNICODE_STRING  ArcName)
- */
-#define IoDeassignArcName IoDeleteSymbolicLink
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDetachDevice(
-  IN OUT PDEVICE_OBJECT  TargetDevice);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoDisconnectInterrupt(
-  IN PKINTERRUPT  InterruptObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoForwardIrpSynchronously(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PIRP  Irp);
-
-#define IoForwardAndCatchIrp IoForwardIrpSynchronously
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeController(
-  IN PCONTROLLER_OBJECT  ControllerObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeErrorLogEntry(
-  PVOID  ElEntry);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeIrp(
-  IN PIRP  Irp);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeMdl(
-  IN PMDL  Mdl);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoFreeWorkItem(
-  IN PIO_WORKITEM  pIOWorkItem);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDevice(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetAttachedDeviceReference(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetBootDiskInformation(
-  IN OUT PBOOTDISK_INFORMATION  BootDiskInformation,
-  IN ULONG  Size);
-
-NTKERNELAPI
-PCONFIGURATION_INFORMATION
-NTAPI
-IoGetConfigurationInformation(
-  VOID);
-
-NTKERNELAPI
-PEPROCESS
-NTAPI
-IoGetCurrentProcess(
-  VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaceAlias(
-  IN PUNICODE_STRING  SymbolicLinkName,
-  IN CONST GUID  *AliasInterfaceClassGuid,
-  OUT PUNICODE_STRING  AliasSymbolicLinkName);
-
-#define DEVICE_INTERFACE_INCLUDE_NONACTIVE 0x00000001
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceInterfaces(
-  IN CONST GUID  *InterfaceClassGuid,
-  IN PDEVICE_OBJECT  PhysicalDeviceObject  OPTIONAL,
-  IN ULONG  Flags,
-  OUT PWSTR  *SymbolicLinkList);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceObjectPointer(
-  IN PUNICODE_STRING  ObjectName,
-  IN ACCESS_MASK  DesiredAccess,
-  OUT PFILE_OBJECT  *FileObject,
-  OUT PDEVICE_OBJECT  *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoGetDeviceProperty(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN DEVICE_REGISTRY_PROPERTY  DeviceProperty,
-  IN ULONG  BufferLength,
-  OUT PVOID  PropertyBuffer,
-  OUT PULONG  ResultLength);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetDeviceToVerify(
-  IN PETHREAD  Thread);
-
-NTKERNELAPI
-PDMA_ADAPTER
-NTAPI
-IoGetDmaAdapter(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject,
-  IN PDEVICE_DESCRIPTION  DeviceDescription,
-  IN OUT PULONG  NumberOfMapRegisters);
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetDriverObjectExtension(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PVOID  ClientIdentificationAddress);
-
-NTKERNELAPI
-PGENERIC_MAPPING
-NTAPI
-IoGetFileObjectGenericMapping(
-  VOID);
-
-/*
- * ULONG
- * IoGetFunctionCodeFromCtlCode(
- *   IN ULONG  ControlCode)
- */
-#define IoGetFunctionCodeFromCtlCode(_ControlCode) \
-  (((_ControlCode) >> 2) & 0x00000FFF)
-
-NTKERNELAPI
-PVOID
-NTAPI
-IoGetInitialStack(
-  VOID);
-
-NTKERNELAPI
-PDEVICE_OBJECT
-NTAPI
-IoGetRelatedDeviceObject(
-  IN PFILE_OBJECT  FileObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoGetStackLimits(
-  OUT PULONG_PTR  LowLimit,
-  OUT PULONG_PTR  HighLimit);
-
-FORCEINLINE
-ULONG_PTR
-IoGetRemainingStackSize(
-  VOID
-)
-{
-    ULONG_PTR End, Begin;
-    ULONG_PTR Result;
-
-    IoGetStackLimits(&Begin, &End);
-    Result = (ULONG_PTR)(&End) - Begin;
-    return Result;
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeDpc(
-  IN PRKDPC  Dpc,
-  IN PKDEFERRED_ROUTINE  DeferredRoutine,
-  IN PVOID  DeferredContext);
-
-/*
- * VOID
- * IoInitializeDpcRequest(
- *   IN PDEVICE_OBJECT DeviceObject,
- *   IN PIO_DPC_ROUTINE DpcRoutine)
- */
-#define IoInitializeDpcRequest(_DeviceObject, \
-                               _DpcRoutine) \
-  KeInitializeDpc(&(_DeviceObject)->Dpc, \
-    (PKDEFERRED_ROUTINE) (_DpcRoutine), \
-    _DeviceObject)
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeIrp(
-  IN OUT PIRP  Irp,
-  IN USHORT  PacketSize,
-  IN CCHAR  StackSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInitializeRemoveLockEx(
-  IN  PIO_REMOVE_LOCK Lock,
-  IN  ULONG   AllocateTag,
-  IN  ULONG   MaxLockedMinutes,
-  IN  ULONG   HighWatermark,
-  IN  ULONG   RemlockSize);
-
-/* VOID
- * IoInitializeRemoveLock(
- *   IN PIO_REMOVE_LOCK  Lock,
- *   IN ULONG  AllocateTag,
- *   IN ULONG  MaxLockedMinutes,
- *   IN ULONG  HighWatermark)
- */
-#define IoInitializeRemoveLock( \
-  Lock, AllocateTag, MaxLockedMinutes, HighWatermark) \
-  IoInitializeRemoveLockEx(Lock, AllocateTag, MaxLockedMinutes, \
-    HighWatermark, sizeof(IO_REMOVE_LOCK))
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoInitializeTimer(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PIO_TIMER_ROUTINE  TimerRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceRelations(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN DEVICE_RELATION_TYPE  Type);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoInvalidateDeviceState(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIs32bitProcess(
-  IN PIRP  Irp  OPTIONAL);
-
-/*
- * BOOLEAN
- * IoIsErrorUserInduced(
- *   IN NTSTATUS  Status);
- */
-#define IoIsErrorUserInduced(Status) \
-   ((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
-   ((Status) == STATUS_IO_TIMEOUT) || \
-   ((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
-   ((Status) == STATUS_NO_MEDIA_IN_DEVICE) || \
-   ((Status) == STATUS_VERIFY_REQUIRED) || \
-   ((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
-   ((Status) == STATUS_WRONG_VOLUME)))
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoIsWdmVersionAvailable(
-  IN UCHAR  MajorVersion,
-  IN UCHAR  MinorVersion);
-
-NTKERNELAPI
-PIRP
-NTAPI
-IoMakeAssociatedIrp(
-  IN PIRP  Irp,
-  IN CCHAR  StackSize);
-
-/*
- * VOID
- * IoMarkIrpPending(
- *   IN OUT PIRP  Irp)
- */
-#define IoMarkIrpPending(_Irp) \
-  (IoGetCurrentIrpStackLocation(_Irp)->Control |= SL_PENDING_RETURNED)
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceInterfaceRegistryKey(
-  IN PUNICODE_STRING  SymbolicLinkName,
-  IN ACCESS_MASK  DesiredAccess,
-  OUT PHANDLE  DeviceInterfaceKey);
-
-#define PLUGPLAY_REGKEY_DEVICE                            1
-#define PLUGPLAY_REGKEY_DRIVER                            2
-#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE                 4
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoOpenDeviceRegistryKey(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  DevInstKeyType,
-  IN ACCESS_MASK  DesiredAccess,
-  OUT PHANDLE  DevInstRegKey);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoQueryDeviceDescription(
-  IN PINTERFACE_TYPE  BusType  OPTIONAL,
-  IN PULONG  BusNumber  OPTIONAL,
-  IN PCONFIGURATION_TYPE  ControllerType  OPTIONAL,
-  IN PULONG  ControllerNumber  OPTIONAL,
-  IN PCONFIGURATION_TYPE  PeripheralType  OPTIONAL,
-  IN PULONG  PeripheralNumber  OPTIONAL,
-  IN PIO_QUERY_DEVICE_ROUTINE  CalloutRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoQueueWorkItem(
-  IN PIO_WORKITEM  pIOWorkItem,
-  IN PIO_WORKITEM_ROUTINE  Routine,
-  IN WORK_QUEUE_TYPE  QueueType,
-  IN PVOID  Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRaiseHardError(
-  IN PIRP  Irp,
-  IN PVPB  Vpb  OPTIONAL,
-  IN PDEVICE_OBJECT  RealDeviceObject);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoRaiseInformationalHardError(
-  IN NTSTATUS  ErrorStatus,
-  IN PUNICODE_STRING  String  OPTIONAL,
-  IN PKTHREAD  Thread  OPTIONAL);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReadDiskSignature(
-  IN PDEVICE_OBJECT  DeviceObject,
-  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
-IoReadPartitionTableEx(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN struct _DRIVE_LAYOUT_INFORMATION_EX  **PartitionBuffer);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterBootDriverReinitialization(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterBootDriverReinitialization(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterDeviceInterface(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject,
-  IN CONST GUID  *InterfaceClassGuid,
-  IN PUNICODE_STRING  ReferenceString  OPTIONAL,
-  OUT PUNICODE_STRING  SymbolicLinkName);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRegisterDriverReinitialization(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
-  IN PVOID  Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterPlugPlayNotification(
-  IN IO_NOTIFICATION_EVENT_CATEGORY  EventCategory,
-  IN ULONG  EventCategoryFlags,
-  IN PVOID  EventCategoryData  OPTIONAL,
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE  CallbackRoutine,
-  IN PVOID  Context,
-  OUT PVOID  *NotificationEntry);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoRegisterShutdownNotification(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseCancelSpinLock(
-  IN KIRQL  Irql);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockAndWaitEx(
-  IN PIO_REMOVE_LOCK  RemoveLock,
-  IN PVOID  Tag,
-  IN ULONG  RemlockSize);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReleaseRemoveLockEx(
-  IN PIO_REMOVE_LOCK  RemoveLock,
-  IN PVOID  Tag,
-  IN ULONG  RemlockSize);
-
-/*
- * VOID
- * IoReleaseRemoveLock(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN PVOID  Tag)
- */
-#define IoReleaseRemoveLock(_RemoveLock, \
-                            _Tag) \
-  IoReleaseRemoveLockEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-/*
- * VOID
- * IoReleaseRemoveLockAndWait(
- *   IN PIO_REMOVE_LOCK  RemoveLock,
- *   IN PVOID  Tag)
- */
-#define IoReleaseRemoveLockAndWait(_RemoveLock, \
-                                   _Tag) \
-  IoReleaseRemoveLockAndWaitEx(_RemoveLock, _Tag, sizeof(IO_REMOVE_LOCK))
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRemoveShareAccess(
-  IN PFILE_OBJECT  FileObject,
-  IN OUT PSHARE_ACCESS  ShareAccess);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportDetectedDevice(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN INTERFACE_TYPE  LegacyBusType,
-  IN ULONG  BusNumber,
-  IN ULONG  SlotNumber,
-  IN PCM_RESOURCE_LIST  ResourceList,
-  IN PIO_RESOURCE_REQUIREMENTS_LIST  ResourceRequirements  OPTIONAL,
-  IN BOOLEAN  ResourceAssigned,
-  IN OUT PDEVICE_OBJECT  *DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceForDetection(
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
-  IN ULONG  DriverListSize  OPTIONAL,
-  IN PDEVICE_OBJECT  DeviceObject  OPTIONAL,
-  IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
-  IN ULONG  DeviceListSize  OPTIONAL,
-  OUT PBOOLEAN  ConflictDetected);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportResourceUsage(
-  IN PUNICODE_STRING  DriverClassName  OPTIONAL,
-  IN PDRIVER_OBJECT  DriverObject,
-  IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
-  IN ULONG  DriverListSize  OPTIONAL,
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
-  IN ULONG  DeviceListSize  OPTIONAL,
-  IN BOOLEAN  OverrideConflict,
-  OUT PBOOLEAN  ConflictDetected);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChange(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject,
-  IN PVOID  NotificationStructure);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoReportTargetDeviceChangeAsynchronous(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject,
-  IN PVOID  NotificationStructure,
-  IN PDEVICE_CHANGE_COMPLETE_CALLBACK  Callback  OPTIONAL,
-  IN PVOID  Context  OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoRequestDeviceEject(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject);
-
-/*
- * VOID
- * IoRequestDpc(
- *   IN PDEVICE_OBJECT  DeviceObject,
- *   IN PIRP  Irp,
- *   IN PVOID  Context);
- */
-#define IoRequestDpc(DeviceObject, Irp, Context)( \
-  KeInsertQueueDpc(&(DeviceObject)->Dpc, (Irp), (Context)))
-
-NTKERNELAPI
-VOID
-NTAPI
-IoReuseIrp(
-  IN OUT PIRP  Irp,
-  IN NTSTATUS  Status);
-
-/*
- * PDRIVER_CANCEL
- * IoSetCancelRoutine(
- *   IN PIRP  Irp,
- *   IN PDRIVER_CANCEL  CancelRoutine)
- */
-#define IoSetCancelRoutine(_Irp, \
-                           _CancelRoutine) \
-  ((PDRIVER_CANCEL) InterlockedExchangePointer( \
-    (PVOID *) &(_Irp)->CancelRoutine, (PVOID) (_CancelRoutine)))
-
-/*
- * VOID
- * IoSetCompletionRoutine(
- *   IN PIRP  Irp,
- *   IN PIO_COMPLETION_ROUTINE  CompletionRoutine,
- *   IN PVOID  Context,
- *   IN BOOLEAN  InvokeOnSuccess,
- *   IN BOOLEAN  InvokeOnError,
- *   IN BOOLEAN  InvokeOnCancel)
- */
-#define IoSetCompletionRoutine(_Irp, \
-                               _CompletionRoutine, \
-                               _Context, \
-                               _InvokeOnSuccess, \
-                               _InvokeOnError, \
-                               _InvokeOnCancel) \
-{ \
-  PIO_STACK_LOCATION _IrpSp; \
-  ASSERT((_InvokeOnSuccess) || (_InvokeOnError) || (_InvokeOnCancel) ? \
-    (_CompletionRoutine) != NULL : TRUE); \
-  _IrpSp = IoGetNextIrpStackLocation(_Irp); \
-  _IrpSp->CompletionRoutine = (PIO_COMPLETION_ROUTINE)(_CompletionRoutine); \
-  _IrpSp->Context = (_Context); \
-  _IrpSp->Control = 0; \
-  if (_InvokeOnSuccess) _IrpSp->Control = SL_INVOKE_ON_SUCCESS; \
-  if (_InvokeOnError) _IrpSp->Control |= SL_INVOKE_ON_ERROR; \
-  if (_InvokeOnCancel) _IrpSp->Control |= SL_INVOKE_ON_CANCEL; \
-}
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetCompletionRoutineEx(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PIRP  Irp,
-  IN PIO_COMPLETION_ROUTINE  CompletionRoutine,
-  IN PVOID  Context,
-  IN BOOLEAN  InvokeOnSuccess,
-  IN BOOLEAN  InvokeOnError,
-  IN BOOLEAN  InvokeOnCancel);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetDeviceInterfaceState(
-  IN PUNICODE_STRING  SymbolicLinkName,
-  IN BOOLEAN  Enable);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetHardErrorOrVerifyDevice(
-  IN PIRP  Irp,
-  IN PDEVICE_OBJECT  DeviceObject);
-
-/*
- * VOID
- * IoSetNextIrpStackLocation(
- *   IN OUT PIRP  Irp)
- */
-#define IoSetNextIrpStackLocation(_Irp) \
-{ \
-  (_Irp)->CurrentLocation--; \
-  (_Irp)->Tail.Overlay.CurrentStackLocation--; \
-}
-
-NTKERNELAPI
-NTSTATUS
-FASTCALL
-IoSetPartitionInformation(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  SectorSize,
-  IN ULONG  PartitionNumber,
-  IN ULONG  PartitionType);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetPartitionInformationEx(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  PartitionNumber,
-  IN struct _SET_PARTITION_INFORMATION_EX  *PartitionInfo);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetShareAccess(
-  IN ACCESS_MASK  DesiredAccess,
-  IN ULONG  DesiredShareAccess,
-  IN OUT PFILE_OBJECT  FileObject,
-  OUT PSHARE_ACCESS  ShareAccess);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoSetStartIoAttributes(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN BOOLEAN  DeferredStartIo,
-  IN BOOLEAN  NonCancelable);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoSetSystemPartition(
-  IN PUNICODE_STRING  VolumeNameString);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-IoSetThreadHardErrorMode(
-  IN BOOLEAN  EnableHardErrors);
-
-/*
- * USHORT
- * IoSizeOfIrp(
- *   IN CCHAR  StackSize)
- */
-#define IoSizeOfIrp(_StackSize) \
-  ((USHORT) (sizeof(IRP) + ((_StackSize) * (sizeof(IO_STACK_LOCATION)))))
-
-/*
- * VOID
- * IoSkipCurrentIrpStackLocation(
- *   IN PIRP  Irp)
- */
-#define IoSkipCurrentIrpStackLocation(_Irp) \
-{ \
-  (_Irp)->CurrentLocation++; \
-  (_Irp)->Tail.Overlay.CurrentStackLocation++; \
-}
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacket(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN BOOLEAN  Cancelable);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartNextPacketByKey(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN BOOLEAN  Cancelable,
-  IN ULONG  Key);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartPacket(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN PIRP  Irp,
-  IN PULONG  Key  OPTIONAL,
-  IN PDRIVER_CANCEL  CancelFunction  OPTIONAL);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStartTimer(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoStopTimer(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoUnregisterPlugPlayNotification(
-  IN PVOID  NotificationEntry);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUnregisterShutdownNotification(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoUpdateShareAccess(
-  IN PFILE_OBJECT  FileObject,
-  IN OUT PSHARE_ACCESS  ShareAccess);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVerifyPartitionTable(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN BOOLEAN  FixErrors);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoVolumeDeviceToDosName(
-  IN  PVOID  VolumeDeviceObject,
-  OUT PUNICODE_STRING  DosName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIAllocateInstanceIds(
-  IN GUID  *Guid,
-  IN ULONG  InstanceCount,
-  OUT ULONG  *FirstInstanceId);
-
-NTKERNELAPI
-ULONG
-NTAPI
-IoWMIDeviceObjectToProviderId(
-  IN PDEVICE_OBJECT  DeviceObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIDeviceObjectToInstanceName(
-  IN PVOID  DataBlockObject,
-  IN PDEVICE_OBJECT  DeviceObject,
-  OUT PUNICODE_STRING  InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIExecuteMethod(
-  IN PVOID  DataBlockObject,
-  IN PUNICODE_STRING  InstanceName,
-  IN ULONG  MethodId,
-  IN ULONG  InBufferSize,
-  IN OUT PULONG  OutBufferSize,
-  IN OUT  PUCHAR  InOutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIHandleToInstanceName(
-  IN PVOID  DataBlockObject,
-  IN HANDLE  FileHandle,
-  OUT PUNICODE_STRING  InstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIOpenBlock(
-  IN GUID  *DataBlockGuid,
-  IN ULONG  DesiredAccess,
-  OUT PVOID  *DataBlockObject);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllData(
-  IN PVOID  DataBlockObject,
-  IN OUT ULONG  *InOutBufferSize,
-  OUT PVOID  OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQueryAllDataMultiple(
-  IN PVOID  *DataBlockObjectList,
-  IN ULONG  ObjectCount,
-  IN OUT ULONG  *InOutBufferSize,
-  OUT PVOID  OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstance(
-  IN PVOID  DataBlockObject,
-  IN PUNICODE_STRING  InstanceName,
-  IN OUT ULONG  *InOutBufferSize,
-  OUT PVOID OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIQuerySingleInstanceMultiple(
-  IN PVOID  *DataBlockObjectList,
-  IN PUNICODE_STRING  InstanceNames,
-  IN ULONG  ObjectCount,
-  IN OUT ULONG  *InOutBufferSize,
-  OUT PVOID  OutBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIRegistrationControl(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  Action);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetNotificationCallback(
-  IN PVOID  Object,
-  IN WMI_NOTIFICATION_CALLBACK  Callback,
-  IN PVOID  Context);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleInstance(
-  IN PVOID  DataBlockObject,
-  IN PUNICODE_STRING  InstanceName,
-  IN ULONG  Version,
-  IN ULONG  ValueBufferSize,
-  IN PVOID  ValueBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISetSingleItem(
-  IN PVOID  DataBlockObject,
-  IN PUNICODE_STRING  InstanceName,
-  IN ULONG  DataItemId,
-  IN ULONG  Version,
-  IN ULONG  ValueBufferSize,
-  IN PVOID  ValueBuffer);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMISuggestInstanceName(
-  IN PDEVICE_OBJECT  PhysicalDeviceObject OPTIONAL,
-  IN PUNICODE_STRING  SymbolicLinkName OPTIONAL,
-  IN BOOLEAN  CombineNames,
-  OUT PUNICODE_STRING  SuggestedInstanceName);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-IoWMIWriteEvent(
-  IN PVOID  WnodeEventItem);
-
-NTKERNELAPI
-VOID
-NTAPI
-IoWriteErrorLogEntry(
-  IN PVOID  ElEntry);
+IoReadDiskSignature(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  BytesPerSector,
+  OUT PDISK_SIGNATURE  Signature);
 
 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
-IoWritePartitionTableEx(
+IoReadPartitionTable(
   IN PDEVICE_OBJECT  DeviceObject,
-  IN struct _DRIVE_LAYOUT_INFORMATION_EX  *PartitionBuffer);
-
-
-
-/** Kernel routines **/
-
-#if defined (_M_AMD64)
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(
-  IN PKSPIN_LOCK  SpinLock,
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
-#else
-NTHALAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(
-  IN PKSPIN_LOCK  SpinLock,
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
-
-NTHALAPI
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
-#endif
-
-NTKERNELAPI
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLockAtDpcLevel(
-  IN PKSPIN_LOCK  SpinLock,
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
-
-NTKERNELAPI
-KIRQL
-NTAPI
-KeAcquireInterruptSpinLock(
-  IN PKINTERRUPT  Interrupt);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeAreApcsDisabled(
-  VOID);
-
-NTKERNELAPI
-DECLSPEC_NORETURN
-VOID
-NTAPI
-KeBugCheck(
-  IN ULONG  BugCheckCode);
-
-NTKERNELAPI
-DECLSPEC_NORETURN
-VOID
-NTAPI
-KeBugCheckEx(
-  IN ULONG  BugCheckCode,
-  IN ULONG_PTR  BugCheckParameter1,
-  IN ULONG_PTR  BugCheckParameter2,
-  IN ULONG_PTR  BugCheckParameter3,
-  IN ULONG_PTR  BugCheckParameter4);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeCancelTimer(
-  IN PKTIMER  Timer);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeClearEvent(
-  IN PRKEVENT  Event);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KeDelayExecutionThread(
-  IN KPROCESSOR_MODE  WaitMode,
-  IN BOOLEAN  Alertable,
-  IN PLARGE_INTEGER  Interval);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeDeregisterBugCheckCallback(
-  IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeEnterCriticalRegion(
-  VOID);
-
-/*
- * VOID
- * KeFlushIoBuffers(
- *   IN PMDL  Mdl,
- *   IN BOOLEAN  ReadOperation,
- *   IN BOOLEAN  DmaOperation)
- */
-#define KeFlushIoBuffers(_Mdl, _ReadOperation, _DmaOperation)
-
-#define ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql))
-#define ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql))
-#define ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock)
-#define ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock)
-
-NTKERNELAPI
-VOID
-NTAPI
-KeFlushQueuedDpcs(
-    VOID
-);
-
-NTHALAPI
-VOID
-NTAPI
-KeFlushWriteBuffer(VOID);
-
-NTKERNELAPI
-ULONG
-NTAPI
-KeGetRecommendedSharedDataAlignment(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeMutex(
-  IN PRKMUTEX  Mutex,
-  IN ULONG  Level);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeSemaphore(
-  IN PRKSEMAPHORE  Semaphore,
-  IN LONG  Count,
-  IN LONG  Limit);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeTimer(
-  IN PKTIMER  Timer);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeInitializeTimerEx(
-  IN PKTIMER  Timer,
-  IN TIMER_TYPE  Type);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertByKeyDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue,
-  IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry,
-  IN ULONG  SortKey);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue,
-  IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeInsertQueueDpc(
-  IN PRKDPC  Dpc,
-  IN PVOID  SystemArgument1,
-  IN PVOID  SystemArgument2);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeLeaveCriticalRegion(
-  VOID);
-
-#ifdef _X86_
-
-static __inline
-VOID
-KeMemoryBarrier(
-  VOID)
-{
-  volatile LONG Barrier;
-#if defined(__GNUC__)
-  __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax");
-#elif defined(_MSC_VER)
-  __asm xchg [Barrier], eax
-#endif
-}
-
-#endif
-
-NTKERNELAPI
-LONG
-NTAPI
-KePulseEvent(
-  IN PRKEVENT  Event,
-  IN KPRIORITY  Increment,
-  IN BOOLEAN  Wait);
-
-NTKERNELAPI
-KAFFINITY
-NTAPI
-KeQueryActiveProcessors(
-    VOID
-);
-
-NTHALAPI
-LARGE_INTEGER
-NTAPI
-KeQueryPerformanceCounter(
-  OUT PLARGE_INTEGER  PerformanceFrequency  OPTIONAL);
-
-NTKERNELAPI
-KPRIORITY
-NTAPI
-KeQueryPriorityThread(
-  IN PRKTHREAD  Thread);
-
-NTKERNELAPI
-ULONG
-NTAPI
-KeQueryRuntimeThread(
-  IN PKTHREAD Thread,
-  OUT PULONG UserTime);
-
-#if !defined(_M_AMD64)
-NTKERNELAPI
-ULONGLONG
-NTAPI
-KeQueryInterruptTime(
-  VOID);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeQuerySystemTime(
-  OUT PLARGE_INTEGER  CurrentTime);
-
-NTKERNELAPI
-VOID
-NTAPI
-KeQueryTickCount(
-  OUT PLARGE_INTEGER  TickCount);
-#endif
-
-NTKERNELAPI
-ULONG
-NTAPI
-KeQueryTimeIncrement(
-  VOID);
-
-NTKERNELAPI
-LONG
-NTAPI
-KeReadStateEvent(
-  IN PRKEVENT  Event);
-
-NTKERNELAPI
-LONG
-NTAPI
-KeReadStateMutex(
-  IN PRKMUTEX  Mutex);
-
-
-NTKERNELAPI
-LONG
-NTAPI
-KeReadStateSemaphore(
-  IN PRKSEMAPHORE  Semaphore);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeReadStateTimer(
-  IN PKTIMER  Timer);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeRegisterBugCheckCallback(
-  IN PKBUGCHECK_CALLBACK_RECORD  CallbackRecord,
-  IN PKBUGCHECK_CALLBACK_ROUTINE  CallbackRoutine,
-  IN PVOID  Buffer,
-  IN ULONG  Length,
-  IN PUCHAR  Component);
-
-NTKERNELAPI
-PVOID
-NTAPI
-KeRegisterNmiCallback(
-  IN PNMI_CALLBACK CallbackRoutine,
-  IN PVOID Context
-);
+  IN ULONG  SectorSize,
+  IN BOOLEAN  ReturnRecognizedPartitions,
+  OUT struct _DRIVE_LAYOUT_INFORMATION  **PartitionBuffer);
 
 NTKERNELAPI
 NTSTATUS
 NTAPI
-KeDeregisterNmiCallback(
-  IN PVOID Handle
-);
+IoReadPartitionTableEx(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN struct _DRIVE_LAYOUT_INFORMATION_EX  **PartitionBuffer);
 
 NTKERNELAPI
 VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLockFromDpcLevel(
-  IN PKLOCK_QUEUE_HANDLE  LockHandle);
+NTAPI
+IoRegisterBootDriverReinitialization(
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  IN PVOID  Context);
 
 NTKERNELAPI
 VOID
 NTAPI
-KeReleaseInterruptSpinLock(
-  IN PKINTERRUPT  Interrupt,
-  IN KIRQL  OldIrql);
+IoRegisterBootDriverReinitialization(
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  IN PVOID  Context);
 
 NTKERNELAPI
-LONG
+VOID
 NTAPI
-KeReleaseMutex(
-  IN PRKMUTEX  Mutex,
-  IN BOOLEAN  Wait);
+IoRegisterDriverReinitialization(
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PDRIVER_REINITIALIZE  DriverReinitializationRoutine,
+  IN PVOID  Context);
 
 NTKERNELAPI
-LONG
+NTSTATUS
 NTAPI
-KeReleaseSemaphore(
-  IN PRKSEMAPHORE  Semaphore,
-  IN KPRIORITY  Increment,
-  IN LONG  Adjustment,
-  IN BOOLEAN  Wait);
+IoReportDetectedDevice(
+  IN PDRIVER_OBJECT  DriverObject,
+  IN INTERFACE_TYPE  LegacyBusType,
+  IN ULONG  BusNumber,
+  IN ULONG  SlotNumber,
+  IN PCM_RESOURCE_LIST  ResourceList,
+  IN PIO_RESOURCE_REQUIREMENTS_LIST  ResourceRequirements  OPTIONAL,
+  IN BOOLEAN  ResourceAssigned,
+  IN OUT PDEVICE_OBJECT  *DeviceObject);
 
 NTKERNELAPI
-PKDEVICE_QUEUE_ENTRY
+NTSTATUS
 NTAPI
-KeRemoveByKeyDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue,
-  IN ULONG  SortKey);
+IoReportResourceForDetection(
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
+  IN ULONG  DriverListSize  OPTIONAL,
+  IN PDEVICE_OBJECT  DeviceObject  OPTIONAL,
+  IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
+  IN ULONG  DeviceListSize  OPTIONAL,
+  OUT PBOOLEAN  ConflictDetected);
 
 NTKERNELAPI
-PKDEVICE_QUEUE_ENTRY
+NTSTATUS
 NTAPI
-KeRemoveDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue);
+IoReportResourceUsage(
+  IN PUNICODE_STRING  DriverClassName  OPTIONAL,
+  IN PDRIVER_OBJECT  DriverObject,
+  IN PCM_RESOURCE_LIST  DriverList  OPTIONAL,
+  IN ULONG  DriverListSize  OPTIONAL,
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN PCM_RESOURCE_LIST  DeviceList  OPTIONAL,
+  IN ULONG  DeviceListSize  OPTIONAL,
+  IN BOOLEAN  OverrideConflict,
+  OUT PBOOLEAN  ConflictDetected);
 
 NTKERNELAPI
-BOOLEAN
+VOID
 NTAPI
-KeRemoveEntryDeviceQueue(
-  IN PKDEVICE_QUEUE  DeviceQueue,
-  IN PKDEVICE_QUEUE_ENTRY  DeviceQueueEntry);
+IoSetHardErrorOrVerifyDevice(
+  IN PIRP  Irp,
+  IN PDEVICE_OBJECT  DeviceObject);
 
 NTKERNELAPI
-BOOLEAN
-NTAPI
-KeRemoveQueueDpc(
-  IN PRKDPC  Dpc);
+NTSTATUS
+FASTCALL
+IoSetPartitionInformation(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN ULONG  PartitionNumber,
+  IN ULONG  PartitionType);
 
 NTKERNELAPI
-LONG
+NTSTATUS
 NTAPI
-KeResetEvent(
-  IN PRKEVENT  Event);
+IoSetPartitionInformationEx(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  PartitionNumber,
+  IN struct _SET_PARTITION_INFORMATION_EX  *PartitionInfo);
 
 NTKERNELAPI
 NTSTATUS
 NTAPI
-KeRestoreFloatingPointState(
-  IN PKFLOATING_SAVE  FloatSave);
+IoSetSystemPartition(
+  IN PUNICODE_STRING  VolumeNameString);
 
 NTKERNELAPI
-VOID
+BOOLEAN
 NTAPI
-KeRevertToUserAffinityThread(VOID);
+IoSetThreadHardErrorMode(
+  IN BOOLEAN  EnableHardErrors);
 
 NTKERNELAPI
 NTSTATUS
 NTAPI
-KeSaveFloatingPointState(
-  OUT PKFLOATING_SAVE  FloatSave);
-
-NTKERNELAPI
-LONG
-NTAPI
-KeSetBasePriorityThread(
-  IN PRKTHREAD  Thread,
-  IN LONG  Increment);
+IoVerifyPartitionTable(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN BOOLEAN  FixErrors);
 
 NTKERNELAPI
-LONG
+NTSTATUS
 NTAPI
-KeSetEvent(
-  IN PRKEVENT  Event,
-  IN KPRIORITY  Increment,
-  IN BOOLEAN  Wait);
+IoVolumeDeviceToDosName(
+  IN  PVOID  VolumeDeviceObject,
+  OUT PUNICODE_STRING  DosName);
 
 NTKERNELAPI
-VOID
-NTAPI
-KeSetImportanceDpc(
-  IN PRKDPC  Dpc,
-  IN KDPC_IMPORTANCE  Importance);
+NTSTATUS
+FASTCALL
+IoWritePartitionTable(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN ULONG  SectorSize,
+  IN ULONG  SectorsPerTrack,
+  IN ULONG  NumberOfHeads,
+  IN struct _DRIVE_LAYOUT_INFORMATION  *PartitionBuffer);
 
 NTKERNELAPI
-KPRIORITY
+NTSTATUS
 NTAPI
-KeSetPriorityThread(
-  IN PKTHREAD  Thread,
-  IN KPRIORITY  Priority);
+IoWritePartitionTableEx(
+  IN PDEVICE_OBJECT  DeviceObject,
+  IN struct _DRIVE_LAYOUT_INFORMATION_EX  *PartitionBuffer);
 
-NTKERNELAPI
-VOID
-NTAPI
-KeSetSystemAffinityThread(
-    IN KAFFINITY Affinity);
+/** Kernel routines **/
 
 NTKERNELAPI
+DECLSPEC_NORETURN
 VOID
 NTAPI
-KeSetTargetProcessorDpc(
-  IN PRKDPC  Dpc,
-  IN CCHAR  Number);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeSetTimer(
-  IN PKTIMER  Timer,
-  IN LARGE_INTEGER  DueTime,
-  IN PKDPC  Dpc  OPTIONAL);
+KeBugCheck(
+  IN ULONG  BugCheckCode);
 
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KeSetTimerEx(
-  IN PKTIMER  Timer,
-  IN LARGE_INTEGER  DueTime,
-  IN LONG  Period  OPTIONAL,
-  IN PKDPC  Dpc  OPTIONAL);
+#ifdef _X86_
 
-NTKERNELAPI
+static __inline
 VOID
-FASTCALL
-KeSetTimeUpdateNotifyRoutine(
-  IN PTIME_UPDATE_NOTIFY_ROUTINE  NotifyRoutine);
+KeMemoryBarrier(
+  VOID)
+{
+  volatile LONG Barrier;
+#if defined(__GNUC__)
+  __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax");
+#elif defined(_MSC_VER)
+  __asm xchg [Barrier], eax
+#endif
+}
 
-NTHALAPI
-VOID
-NTAPI
-KeStallExecutionProcessor(
-  IN ULONG  MicroSeconds);
+#endif
 
 NTKERNELAPI
-BOOLEAN
+LONG
 NTAPI
-KeSynchronizeExecution(
-  IN PKINTERRUPT    Interrupt,
-  IN PKSYNCHRONIZE_ROUTINE  SynchronizeRoutine,
-  IN PVOID  SynchronizeContext);
+KePulseEvent(
+  IN PRKEVENT  Event,
+  IN KPRIORITY  Increment,
+  IN BOOLEAN  Wait);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KeWaitForMultipleObjects(
-  IN ULONG  Count,
-  IN PVOID  Object[],
-  IN WAIT_TYPE  WaitType,
-  IN KWAIT_REASON  WaitReason,
-  IN KPROCESSOR_MODE  WaitMode,
-  IN BOOLEAN  Alertable,
-  IN PLARGE_INTEGER  Timeout  OPTIONAL,
-  IN PKWAIT_BLOCK  WaitBlockArray  OPTIONAL);
+#if !defined(_M_AMD64)
 
 NTKERNELAPI
-NTSTATUS
+VOID
 NTAPI
-KeWaitForMutexObject(
-  IN PRKMUTEX  Mutex,
-  IN KWAIT_REASON  WaitReason,
-  IN KPROCESSOR_MODE  WaitMode,
-  IN BOOLEAN  Alertable,
-  IN PLARGE_INTEGER  Timeout  OPTIONAL);
+KeQueryTickCount(
+  OUT PLARGE_INTEGER  TickCount);
+#endif
 
 NTKERNELAPI
-NTSTATUS
+LONG
 NTAPI
-KeWaitForSingleObject(
-  IN PVOID  Object,
-  IN KWAIT_REASON  WaitReason,
-  IN KPROCESSOR_MODE  WaitMode,
-  IN BOOLEAN  Alertable,
-  IN PLARGE_INTEGER  Timeout  OPTIONAL);
-
-typedef
-ULONG_PTR
-(NTAPI *PKIPI_BROADCAST_WORKER)(
-    IN ULONG_PTR Argument
-);
+KeSetBasePriorityThread(
+  IN PRKTHREAD  Thread,
+  IN LONG  Increment);
 
 NTKERNELAPI
-ULONG_PTR
-NTAPI
-KeIpiGenericCall(
-    IN PKIPI_BROADCAST_WORKER BroadcastFunction,
-    IN ULONG_PTR Context
-);
+VOID
+FASTCALL
+KeSetTimeUpdateNotifyRoutine(
+  IN PTIME_UPDATE_NOTIFY_ROUTINE  NotifyRoutine);
 
 #if defined(_X86_)
 
@@ -5899,71 +3035,12 @@ KeRaiseIrqlToSynchLevel(
 
 /** Memory manager routines **/
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmAdvanceMdl(
-  IN PMDL  Mdl,
-  IN ULONG  NumberOfBytes);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmAllocateContiguousMemory(
-  IN ULONG  NumberOfBytes,
-  IN PHYSICAL_ADDRESS  HighestAcceptableAddress);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmAllocateContiguousMemorySpecifyCache(
-  IN SIZE_T  NumberOfBytes,
-  IN PHYSICAL_ADDRESS  LowestAcceptableAddress,
-  IN PHYSICAL_ADDRESS  HighestAcceptableAddress,
-  IN PHYSICAL_ADDRESS  BoundaryAddressMultiple  OPTIONAL,
-  IN MEMORY_CACHING_TYPE  CacheType);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmAllocateMappingAddress(
-  IN SIZE_T  NumberOfBytes,
-  IN ULONG  PoolTag);
-
 NTKERNELAPI
 PVOID
 NTAPI
 MmAllocateNonCachedMemory(
   IN ULONG  NumberOfBytes);
 
-NTKERNELAPI
-PMDL
-NTAPI
-MmAllocatePagesForMdl(
-  IN PHYSICAL_ADDRESS  LowAddress,
-  IN PHYSICAL_ADDRESS  HighAddress,
-  IN PHYSICAL_ADDRESS  SkipBytes,
-  IN SIZE_T  TotalBytes);
-
-#if (NTDDI_VERSION >= NTDDI_WS03SP1)
-NTKERNELAPI
-PMDL
-NTAPI
-MmAllocatePagesForMdlEx(
-  IN PHYSICAL_ADDRESS LowAddress,
-  IN PHYSICAL_ADDRESS HighAddress,
-  IN PHYSICAL_ADDRESS SkipBytes,
-  IN SIZE_T TotalBytes,
-  IN MEMORY_CACHING_TYPE CacheType,
-  IN ULONG Flags);
-#endif
-
-NTKERNELAPI
-VOID
-NTAPI
-MmBuildMdlForNonPagedPool(
-  IN OUT PMDL  MemoryDescriptorList);
-
 typedef enum _MMFLUSH_TYPE {
   MmFlushForDelete,
   MmFlushForWrite
@@ -5976,71 +3053,12 @@ MmFlushImageSection(
   IN PSECTION_OBJECT_POINTERS  SectionObjectPointer,
   IN MMFLUSH_TYPE  FlushType);
 
-NTKERNELAPI
-VOID
-NTAPI
-MmFreeContiguousMemory(
-  IN PVOID  BaseAddress);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreeContiguousMemorySpecifyCache(
-  IN PVOID  BaseAddress,
-  IN SIZE_T  NumberOfBytes,
-  IN MEMORY_CACHING_TYPE  CacheType);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreeMappingAddress(
-  IN PVOID  BaseAddress,
-  IN ULONG  PoolTag);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreeNonCachedMemory(
-  IN PVOID  BaseAddress,
-  IN SIZE_T  NumberOfBytes);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmFreePagesFromMdl(
-  IN PMDL  MemoryDescriptorList);
-
-/*
- * ULONG
- * MmGetMdlByteCount(
- *   IN PMDL  Mdl)
- */
-#define MmGetMdlByteCount(_Mdl) \
-  ((_Mdl)->ByteCount)
-
-/*
- * ULONG
- * MmGetMdlByteOffset(
- *   IN PMDL  Mdl)
- */
-#define MmGetMdlByteOffset(_Mdl) \
-  ((_Mdl)->ByteOffset)
-
-/*
- * PPFN_NUMBER
- * MmGetMdlPfnArray(
- *   IN PMDL  Mdl)
- */
-#define MmGetMdlPfnArray(_Mdl) \
-  ((PPFN_NUMBER) ((_Mdl) + 1))
-
-/*
- * PVOID
- * MmGetMdlVirtualAddress(
- *   IN PMDL  Mdl)
- */
-#define MmGetMdlVirtualAddress(_Mdl) \
-  ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
+NTKERNELAPI
+VOID
+NTAPI
+MmFreeNonCachedMemory(
+  IN PVOID  BaseAddress,
+  IN SIZE_T  NumberOfBytes);
 
 NTKERNELAPI
 PHYSICAL_ADDRESS
@@ -6060,26 +3078,6 @@ NTAPI
 MmGetVirtualForPhysical(
   IN PHYSICAL_ADDRESS  PhysicalAddress);
 
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPagesSpecifyCache(
-  IN PMDL  MemoryDescriptorList,
-  IN KPROCESSOR_MODE  AccessMode,
-  IN MEMORY_CACHING_TYPE  CacheType,
-  IN PVOID  BaseAddress,
-  IN ULONG  BugCheckOnFailure,
-  IN MM_PAGE_PRIORITY  Priority);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPagesWithReservedMapping(
-  IN PVOID  MappingAddress,
-  IN ULONG  PoolTag,
-  IN PMDL  MemoryDescriptorList,
-  IN MEMORY_CACHING_TYPE  CacheType);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6126,12 +3124,6 @@ MmMarkPhysicalMemoryAsGood(
   IN PPHYSICAL_ADDRESS  StartAddress,
   IN OUT PLARGE_INTEGER  NumberOfBytes);
 
-NTKERNELAPI
-PVOID
-NTAPI
-MmGetSystemRoutineAddress(
-  IN PUNICODE_STRING  SystemRoutineName);
-
 /*
  * ULONG
  * ADDRESS_AND_SIZE_TO_SPAN_PAGES(
@@ -6143,56 +3135,18 @@ MmGetSystemRoutineAddress(
   ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
     + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
 
-/*
- * VOID
- * MmInitializeMdl(
- *   IN PMDL  MemoryDescriptorList,
- *   IN PVOID  BaseVa,
- *   IN SIZE_T  Length)
- */
-#define MmInitializeMdl(_MemoryDescriptorList, \
-                        _BaseVa, \
-                        _Length) \
-{ \
-  (_MemoryDescriptorList)->Next = (PMDL) NULL; \
-  (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
-    (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
-  (_MemoryDescriptorList)->MdlFlags = 0; \
-  (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
-  (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
-  (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
-}
-
 NTKERNELAPI
 BOOLEAN
 NTAPI
 MmIsAddressValid(
   IN PVOID  VirtualAddress);
 
-NTKERNELAPI
-LOGICAL
-NTAPI
-MmIsDriverVerifying(
-  IN PDRIVER_OBJECT  DriverObject);
-
 NTKERNELAPI
 BOOLEAN
 NTAPI
 MmIsThisAnNtAsSystem(
   VOID);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmIsVerifierEnabled(
-  OUT PULONG  VerifierFlags);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmLockPagableDataSection(
-  IN PVOID  AddressWithinSection);
-
 NTKERNELAPI
 PVOID
 NTAPI
@@ -6212,21 +3166,6 @@ NTAPI
 MmLockPagableSectionByHandle(
   IN PVOID  ImageSectionHandle);
 
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapIoSpace(
-  IN PHYSICAL_ADDRESS  PhysicalAddress,
-  IN ULONG  NumberOfBytes,
-  IN MEMORY_CACHING_TYPE  CacheEnable);
-
-NTKERNELAPI
-PVOID
-NTAPI
-MmMapLockedPages(
-  IN PMDL  MemoryDescriptorList,
-  IN KPROCESSOR_MODE  AccessMode);
-
 NTKERNELAPI
 PVOID
 NTAPI
@@ -6241,35 +3180,6 @@ MmUnlockPageableImageSection(
     IN PVOID ImageSectionHandle
 );
 
-NTKERNELAPI
-PVOID
-NTAPI
-MmPageEntireDriver(
-  IN PVOID  AddressWithinSection);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmProbeAndLockProcessPages(
-  IN OUT PMDL  MemoryDescriptorList,
-  IN PEPROCESS  Process,
-  IN KPROCESSOR_MODE  AccessMode,
-  IN LOCK_OPERATION  Operation);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-MmProtectMdlSystemAddress(
-  IN PMDL  MemoryDescriptorList,
-  IN ULONG  NewProtect);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapLockedPages(
-  IN PVOID  BaseAddress,
-  IN PMDL  MemoryDescriptorList);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6288,37 +3198,6 @@ NTAPI
 MmUnsecureVirtualMemory(
   IN HANDLE  SecureHandle);
 
-/*
- * VOID
- * MmPrepareMdlForReuse(
- *   IN PMDL  Mdl)
- */
-#define MmPrepareMdlForReuse(_Mdl) \
-{ \
-  if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
-    ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
-    MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
-  } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
-    ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
-  } \
-}
-
-#define MmGetProcedureAddress(Address) (Address)
-
-NTKERNELAPI
-VOID
-NTAPI
-MmProbeAndLockPages(
-  IN OUT PMDL  MemoryDescriptorList,
-  IN KPROCESSOR_MODE  AccessMode,
-  IN LOCK_OPERATION  Operation);
-
-NTKERNELAPI
-MM_SYSTEMSIZE
-NTAPI
-MmQuerySystemSize(
-  VOID);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6326,12 +3205,6 @@ MmRemovePhysicalMemory(
   IN PPHYSICAL_ADDRESS  StartAddress,
   IN OUT PLARGE_INTEGER  NumberOfBytes);
 
-NTKERNELAPI
-VOID
-NTAPI
-MmResetDriverPaging(
-  IN PVOID  AddressWithinSection);
-
 NTKERNELAPI
 HANDLE
 NTAPI
@@ -6340,40 +3213,6 @@ MmSecureVirtualMemory(
   IN SIZE_T  Size,
   IN ULONG  ProbeMode);
 
-NTKERNELAPI
-SIZE_T
-NTAPI
-MmSizeOfMdl(
-  IN PVOID  Base,
-  IN SIZE_T  Length);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnlockPagableImageSection(
-  IN PVOID  ImageSectionHandle);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnlockPages(
-  IN PMDL  MemoryDescriptorList);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapIoSpace(
-  IN PVOID  BaseAddress,
-  IN SIZE_T  NumberOfBytes);
-
-NTKERNELAPI
-VOID
-NTAPI
-MmUnmapReservedMapping(
-  IN PVOID  BaseAddress,
-  IN ULONG  PoolTag,
-  IN PMDL  MemoryDescriptorList);
-
 NTKERNELAPI
 VOID
 NTAPI
@@ -6381,8 +3220,6 @@ MmUnmapVideoDisplay(
   IN PVOID  BaseAddress,
   IN SIZE_T  NumberOfBytes);
 
-
-
 /** Object manager routines **/
 
 NTKERNELAPI
@@ -6401,27 +3238,6 @@ ObDereferenceSecurityDescriptor(
   PSECURITY_DESCRIPTOR  SecurityDescriptor,
   ULONG  Count);
 
-NTKERNELAPI
-LONG_PTR
-FASTCALL
-ObfDereferenceObject(
-  IN PVOID  Object);
-
-/*
- * VOID
- * ObDereferenceObject(
- *   IN PVOID  Object)
- */
-#define ObDereferenceObject ObfDereferenceObject
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ObGetObjectSecurity(
-  IN PVOID  Object,
-  OUT PSECURITY_DESCRIPTOR  *SecurityDescriptor,
-  OUT PBOOLEAN  MemoryAllocated);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6433,12 +3249,6 @@ ObInsertObject(
   OUT PVOID*  ReferencedObject  OPTIONAL,
   OUT PHANDLE  Handle);
 
-NTKERNELAPI
-LONG_PTR
-FASTCALL
-ObfReferenceObject(
-  IN PVOID  Object);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6446,12 +3256,6 @@ ObLogSecurityDescriptor(
   IN PSECURITY_DESCRIPTOR  InputSecurityDescriptor,
   OUT PSECURITY_DESCRIPTOR  *OutputSecurityDescriptor,
   IN ULONG RefBias);
-/*
- * VOID
- * ObReferenceObject(
- *   IN PVOID  Object)
- */
-#define ObReferenceObject ObfReferenceObject
 
 NTKERNELAPI
 VOID
@@ -6490,17 +3294,6 @@ ObQueryObjectAuditingByHandle(
   IN HANDLE  Handle,
   OUT PBOOLEAN  GenerateOnClose);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ObReferenceObjectByHandle(
-  IN HANDLE  Handle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_TYPE  ObjectType  OPTIONAL,
-  IN KPROCESSOR_MODE  AccessMode,
-  OUT PVOID  *Object,
-  OUT POBJECT_HANDLE_INFORMATION  HandleInformation  OPTIONAL);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
@@ -6514,15 +3307,6 @@ ObReferenceObjectByName(
   IN OUT PVOID  ParseContext  OPTIONAL,
   OUT PVOID  *Object);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-ObReferenceObjectByPointer(
-  IN PVOID  Object,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_TYPE  ObjectType,
-  IN KPROCESSOR_MODE  AccessMode);
-
 NTKERNELAPI
 VOID
 NTAPI
@@ -6530,15 +3314,6 @@ ObReferenceSecurityDescriptor(
   IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
   IN ULONG  Count);
 
-NTKERNELAPI
-VOID
-NTAPI
-ObReleaseObjectSecurity(
-  IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
-  IN BOOLEAN  MemoryAllocated);
-
-
-
 /** Process manager routines **/
 
 NTKERNELAPI
@@ -6549,37 +3324,12 @@ PsCreateSystemProcess(
   IN ACCESS_MASK  DesiredAccess,
   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PsCreateSystemThread(
-  OUT PHANDLE  ThreadHandle,
-  IN ULONG  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes  OPTIONAL,
-  IN HANDLE  ProcessHandle  OPTIONAL,
-  OUT PCLIENT_ID  ClientId  OPTIONAL,
-  IN PKSTART_ROUTINE  StartRoutine,
-  IN PVOID  StartContext);
-
-/*
- * PEPROCESS
- * PsGetCurrentProcess(VOID)
- */
-#define PsGetCurrentProcess IoGetCurrentProcess
-
 NTKERNELAPI
 HANDLE
 NTAPI
 PsGetCurrentProcessId(
   VOID);
 
-/*
- * PETHREAD
- * PsGetCurrentThread(VOID)
- */
-#define PsGetCurrentThread() \
-  ((PETHREAD) KeGetCurrentThread())
-
 NTKERNELAPI
 HANDLE
 NTAPI
@@ -6631,64 +3381,10 @@ NTAPI
 PsSetLoadImageNotifyRoutine(
   IN PLOAD_IMAGE_NOTIFY_ROUTINE  NotifyRoutine);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PsTerminateSystemThread(
-  IN NTSTATUS  ExitStatus);
-
 extern NTSYSAPI PEPROCESS PsInitialSystemProcess;
 
-
 /** Security reference monitor routines **/
 
-NTKERNELAPI
-BOOLEAN
-NTAPI
-SeAccessCheck(
-  IN PSECURITY_DESCRIPTOR  SecurityDescriptor,
-  IN PSECURITY_SUBJECT_CONTEXT  SubjectSecurityContext,
-  IN BOOLEAN  SubjectContextLocked,
-  IN ACCESS_MASK  DesiredAccess,
-  IN ACCESS_MASK  PreviouslyGrantedAccess,
-  OUT PPRIVILEGE_SET  *Privileges  OPTIONAL,
-  IN PGENERIC_MAPPING  GenericMapping,
-  IN KPROCESSOR_MODE  AccessMode,
-  OUT PACCESS_MASK  GrantedAccess,
-  OUT PNTSTATUS  AccessStatus);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-SeAssignSecurity(
-  IN PSECURITY_DESCRIPTOR  ParentDescriptor  OPTIONAL,
-  IN PSECURITY_DESCRIPTOR  ExplicitDescriptor  OPTIONAL,
-  OUT PSECURITY_DESCRIPTOR  *NewDescriptor,
-  IN BOOLEAN  IsDirectoryObject,
-  IN PSECURITY_SUBJECT_CONTEXT  SubjectContext,
-  IN PGENERIC_MAPPING  GenericMapping,
-  IN POOL_TYPE  PoolType);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-SeAssignSecurityEx(
-  IN PSECURITY_DESCRIPTOR  ParentDescriptor  OPTIONAL,
-  IN PSECURITY_DESCRIPTOR  ExplicitDescriptor  OPTIONAL,
-  OUT PSECURITY_DESCRIPTOR  *NewDescriptor,
-  IN GUID  *ObjectType  OPTIONAL,
-  IN BOOLEAN  IsDirectoryObject,
-  IN ULONG  AutoInheritFlags,
-  IN PSECURITY_SUBJECT_CONTEXT  SubjectContext,
-  IN PGENERIC_MAPPING  GenericMapping,
-  IN POOL_TYPE  PoolType);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-SeDeassignSecurity(
-  IN OUT PSECURITY_DESCRIPTOR  *SecurityDescriptor);
-
 NTKERNELAPI
 BOOLEAN
 NTAPI
@@ -6696,16 +3392,7 @@ SeSinglePrivilegeCheck(
   LUID  PrivilegeValue,
   KPROCESSOR_MODE  PreviousMode);
 
-NTKERNELAPI
-BOOLEAN
-NTAPI
-SeValidSecurityDescriptor(
-  IN ULONG  Length,
-  IN PSECURITY_DESCRIPTOR  SecurityDescriptor);
-
-
-
-/** NtXxx routines **/
+/** NtXxx and ZwXxx routines **/
 
 NTSYSCALLAPI
 NTSTATUS
@@ -6726,10 +3413,6 @@ NtQueryInformationProcess(
   IN ULONG  ProcessInformationLength,
   OUT PULONG  ReturnLength OPTIONAL);
 
-
-
-/** NtXxx and ZwXxx routines **/
-
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -6743,20 +3426,6 @@ NTAPI
 NtClose(
   IN HANDLE  Handle);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwClose(
-  IN HANDLE  Handle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwCreateDirectoryObject(
-  OUT PHANDLE  DirectoryHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -6777,34 +3446,6 @@ ZwCreateEvent(
   IN EVENT_TYPE  EventType,
   IN BOOLEAN  InitialState);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwCreateFile(
-  OUT PHANDLE  FileHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock,
-  IN PLARGE_INTEGER  AllocationSize  OPTIONAL,
-  IN ULONG  FileAttributes,
-  IN ULONG  ShareAccess,
-  IN ULONG  CreateDisposition,
-  IN ULONG  CreateOptions,
-  IN PVOID  EaBuffer  OPTIONAL,
-  IN ULONG  EaLength);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwCreateKey(
-  OUT PHANDLE  KeyHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes,
-  IN ULONG  TitleIndex,
-  IN PUNICODE_STRING  Class  OPTIONAL,
-  IN ULONG  CreateOptions,
-  OUT PULONG  Disposition  OPTIONAL);
-
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -6814,19 +3455,6 @@ ZwCreateTimer(
   IN POBJECT_ATTRIBUTES  ObjectAttributes  OPTIONAL,
   IN TIMER_TYPE  TimerType);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwDeleteKey(
-  IN HANDLE  KeyHandle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwDeleteValueKey(
-  IN HANDLE  KeyHandle,
-  IN PUNICODE_STRING  ValueName);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -6853,43 +3481,9 @@ ZwDeviceIoControlFile(
   OUT PIO_STATUS_BLOCK  IoStatusBlock,
   IN ULONG  IoControlCode,
   IN PVOID  InputBuffer,
-  IN ULONG  InputBufferSize,
-  OUT PVOID  OutputBuffer,
-  IN ULONG  OutputBufferSize);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwEnumerateKey(
-  IN HANDLE  KeyHandle,
-  IN ULONG  Index,
-  IN KEY_INFORMATION_CLASS  KeyInformationClass,
-  OUT PVOID  KeyInformation,
-  IN ULONG  Length,
-  OUT PULONG  ResultLength);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwEnumerateValueKey(
-  IN HANDLE  KeyHandle,
-  IN ULONG  Index,
-  IN KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
-  OUT PVOID  KeyValueInformation,
-  IN ULONG  Length,
-  OUT PULONG  ResultLength);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwFlushKey(
-  IN HANDLE  KeyHandle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwMakeTemporaryObject(
-  IN HANDLE  Handle);
+  IN ULONG  InputBufferSize,
+  OUT PVOID  OutputBuffer,
+  IN ULONG  OutputBufferSize);
 
 NTSYSCALLAPI
 NTSTATUS
@@ -6906,21 +3500,6 @@ NtMapViewOfSection(
   IN ULONG  AllocationType,
   IN ULONG  Protect);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwMapViewOfSection(
-  IN HANDLE  SectionHandle,
-  IN HANDLE  ProcessHandle,
-  IN OUT PVOID  *BaseAddress,
-  IN ULONG_PTR  ZeroBits,
-  IN SIZE_T  CommitSize,
-  IN OUT PLARGE_INTEGER  SectionOffset  OPTIONAL,
-  IN OUT PSIZE_T  ViewSize,
-  IN SECTION_INHERIT  InheritDisposition,
-  IN ULONG  AllocationType,
-  IN ULONG  Protect);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -6932,6 +3511,8 @@ NtOpenFile(
   IN ULONG  ShareAccess,
   IN ULONG  OpenOptions);
 
+
+
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -6943,30 +3524,6 @@ ZwOpenFile(
   IN ULONG  ShareAccess,
   IN ULONG  OpenOptions);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwOpenKey(
-  OUT PHANDLE  KeyHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwOpenSection(
-  OUT PHANDLE  SectionHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwOpenSymbolicLinkObject(
-  OUT PHANDLE  LinkHandle,
-  IN ACCESS_MASK  DesiredAccess,
-  IN POBJECT_ATTRIBUTES  ObjectAttributes);
-
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -6975,45 +3532,6 @@ ZwOpenTimer(
   IN ACCESS_MASK  DesiredAccess,
   IN POBJECT_ATTRIBUTES  ObjectAttributes);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwQueryInformationFile(
-  IN HANDLE  FileHandle,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock,
-  OUT PVOID  FileInformation,
-  IN ULONG  Length,
-  IN FILE_INFORMATION_CLASS  FileInformationClass);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwQueryKey(
-  IN HANDLE  KeyHandle,
-  IN KEY_INFORMATION_CLASS  KeyInformationClass,
-  OUT PVOID  KeyInformation,
-  IN ULONG  Length,
-  OUT PULONG  ResultLength);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwQuerySymbolicLinkObject(
-  IN HANDLE  LinkHandle,
-  IN OUT PUNICODE_STRING  LinkTarget,
-  OUT PULONG  ReturnedLength  OPTIONAL);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwQueryValueKey(
-  IN HANDLE  KeyHandle,
-  IN PUNICODE_STRING  ValueName,
-  IN KEY_VALUE_INFORMATION_CLASS  KeyValueInformationClass,
-  OUT PVOID  KeyValueInformation,
-  IN ULONG  Length,
-  OUT PULONG  ResultLength);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -7028,20 +3546,6 @@ NtReadFile(
   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
   IN PULONG  Key  OPTIONAL);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwReadFile(
-  IN HANDLE  FileHandle,
-  IN HANDLE  Event  OPTIONAL,
-  IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
-  IN PVOID  ApcContext  OPTIONAL,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock,
-  OUT PVOID  Buffer,
-  IN ULONG  Length,
-  IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
-  IN PULONG  Key  OPTIONAL);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -7056,16 +3560,6 @@ ZwSetEvent(
   IN HANDLE  EventHandle,
   OUT PLONG  PreviousState  OPTIONAL);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwSetInformationFile(
-  IN HANDLE  FileHandle,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock,
-  IN PVOID  FileInformation,
-  IN ULONG  Length,
-  IN FILE_INFORMATION_CLASS  FileInformationClass);
-
 NTSYSAPI
 NTSTATUS
 NTAPI
@@ -7087,17 +3581,6 @@ ZwSetTimer(
   IN LONG  Period  OPTIONAL,
   OUT PBOOLEAN  PreviousState  OPTIONAL);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwSetValueKey(
-  IN HANDLE  KeyHandle,
-  IN PUNICODE_STRING  ValueName,
-  IN ULONG  TitleIndex  OPTIONAL,
-  IN ULONG  Type,
-  IN PVOID  Data,
-  IN ULONG  DataSize);
-
 /* [Nt|Zw]MapViewOfSection.InheritDisposition constants */
 #define AT_EXTENDABLE_FILE                0x00002000
 #define AT_RESERVED                       0x20000000
@@ -7110,13 +3593,6 @@ NtUnmapViewOfSection(
   IN HANDLE  ProcessHandle,
   IN PVOID  BaseAddress);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwUnmapViewOfSection(
-  IN HANDLE  ProcessHandle,
-  IN PVOID  BaseAddress);
-
 NTSYSCALLAPI
 NTSTATUS
 NTAPI
@@ -7147,101 +3623,14 @@ NtWriteFile(
   IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
   IN PULONG  Key  OPTIONAL);
 
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwWriteFile(
-  IN HANDLE  FileHandle,
-  IN HANDLE  Event  OPTIONAL,
-  IN PIO_APC_ROUTINE  ApcRoutine  OPTIONAL,
-  IN PVOID  ApcContext  OPTIONAL,
-  OUT PIO_STATUS_BLOCK  IoStatusBlock,
-  IN PVOID  Buffer,
-  IN ULONG  Length,
-  IN PLARGE_INTEGER  ByteOffset  OPTIONAL,
-  IN PULONG  Key  OPTIONAL);
-
-
-
 /** Power management support routines **/
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PoCallDriver(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN OUT PIRP  Irp);
-
-NTKERNELAPI
-PULONG
-NTAPI
-PoRegisterDeviceForIdleDetection(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN ULONG  ConservationIdleTime,
-  IN ULONG  PerformanceIdleTime,
-  IN DEVICE_POWER_STATE  State);
-
-NTKERNELAPI
-PVOID
-NTAPI
-PoRegisterSystemState(
-  IN PVOID  StateHandle,
-  IN EXECUTION_STATE  Flags);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-PoRequestPowerIrp(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN UCHAR  MinorFunction,
-  IN POWER_STATE  PowerState,
-  IN PREQUEST_POWER_COMPLETE  CompletionFunction,
-  IN PVOID  Context,
-  OUT PIRP  *Irp OPTIONAL);
-
 NTKERNELAPI
 NTSTATUS
 NTAPI
 PoRequestShutdownEvent(
   OUT PVOID  *Event);
 
-NTKERNELAPI
-VOID
-NTAPI
-PoSetDeviceBusy(
-  PULONG  IdlePointer);
-
-#define PoSetDeviceBusy(IdlePointer) \
- ((void)(*(IdlePointer) = 0))
-
-NTKERNELAPI
-POWER_STATE
-NTAPI
-PoSetPowerState(
-  IN PDEVICE_OBJECT  DeviceObject,
-  IN POWER_STATE_TYPE  Type,
-  IN POWER_STATE  State);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoSetSystemState(
-  IN EXECUTION_STATE  Flags);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoStartNextPowerIrp(
-  IN PIRP  Irp);
-
-NTKERNELAPI
-VOID
-NTAPI
-PoUnregisterSystemState(
-  IN PVOID  StateHandle);
-
-
-
 /** WMI library support routines **/
 
 NTSTATUS
@@ -7262,16 +3651,6 @@ WmiFireEvent(
   IN ULONG  EventDataSize,
   IN PVOID  EventData);
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-WmiQueryTraceInformation(
-  IN TRACE_INFORMATION_CLASS  TraceInformationClass,
-  OUT PVOID  TraceInformation,
-  IN ULONG  TraceInformationLength,
-  OUT PULONG  RequiredLength OPTIONAL,
-  IN PVOID  Buffer OPTIONAL);
-
 NTSTATUS
 NTAPI
 WmiSystemControl(
@@ -7280,114 +3659,8 @@ WmiSystemControl(
   IN PIRP  Irp,
   OUT PSYSCTL_IRP_DISPOSITION  IrpDisposition);
 
-NTKERNELAPI
-NTSTATUS
-DDKCDECLAPI
-WmiTraceMessage(
-  IN TRACEHANDLE  LoggerHandle,
-  IN ULONG  MessageFlags,
-  IN LPGUID  MessageGuid,
-  IN USHORT  MessageNumber,
-  IN ...);
-
-#if 0
-/* FIXME: Get va_list from where? */
-NTKERNELAPI
-NTSTATUS
-DDKCDECLAPI
-WmiTraceMessageVa(
-  IN TRACEHANDLE  LoggerHandle,
-  IN ULONG  MessageFlags,
-  IN LPGUID  MessageGuid,
-  IN USHORT  MessageNumber,
-  IN va_list  MessageArgList);
-#endif
-
-
 /** Kernel debugger routines **/
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KdDisableDebugger(
-  VOID);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KdEnableDebugger(
-  VOID);
-
-NTKERNELAPI
-BOOLEAN
-NTAPI
-KdRefreshDebuggerNotPresent(
-    VOID
-);
-
-#if (NTDDI_VERSION >= NTDDI_WS03SP1)
-NTKERNELAPI
-NTSTATUS
-NTAPI
-KdChangeOption(
-  IN KD_OPTION Option,
-  IN ULONG InBufferBytes OPTIONAL,
-  IN PVOID InBuffer,
-  IN ULONG OutBufferBytes OPTIONAL,
-  OUT PVOID OutBuffer,
-  OUT PULONG OutBufferNeeded OPTIONAL);
-#endif
-
-VOID
-NTAPI
-DbgBreakPoint(
-  VOID);
-
-NTSYSAPI
-VOID
-NTAPI
-DbgBreakPointWithStatus(
-  IN ULONG  Status);
-
-ULONG
-DDKCDECLAPI
-DbgPrint(
-  IN PCCH  Format,
-  IN ...);
-
-NTSYSAPI
-ULONG
-DDKCDECLAPI
-DbgPrintEx(
-  IN ULONG  ComponentId,
-  IN ULONG  Level,
-  IN PCCH  Format,
-  IN ...);
-
-ULONG
-NTAPI
-vDbgPrintEx(
-  IN ULONG ComponentId,
-  IN ULONG Level,
-  IN PCCH Format,
-  IN va_list ap);
-
-ULONG
-NTAPI
-vDbgPrintExWithPrefix(
-  IN PCCH Prefix,
-  IN ULONG ComponentId,
-  IN ULONG Level,
-  IN PCCH Format,
-  IN va_list ap);
-
-NTKERNELAPI
-ULONG
-DDKCDECLAPI
-DbgPrintReturnControlC(
-  IN PCCH  Format,
-  IN ...);
-
 ULONG
 NTAPI
 DbgPrompt(
@@ -7396,110 +3669,8 @@ DbgPrompt(
     IN ULONG MaximumResponseLength
 );
 
-NTKERNELAPI
-NTSTATUS
-NTAPI
-DbgQueryDebugFilterState(
-  IN ULONG  ComponentId,
-  IN ULONG  Level);
-
-NTKERNELAPI
-NTSTATUS
-NTAPI
-DbgSetDebugFilterState(
-  IN ULONG  ComponentId,
-  IN ULONG  Level,
-  IN BOOLEAN  State);
-
-#if DBG
-
-#define KdPrint(_x_) DbgPrint _x_
-#define KdPrintEx(_x_) DbgPrintEx _x_
-#define KdBreakPoint() DbgBreakPoint()
-#define KdBreakPointWithStatus(s) DbgBreakPointWithStatus(s)
-
-#else /* !DBG */
-
-#define KdPrint(_x_)
-#define KdPrintEx(_x_)
-#define KdBreakPoint()
-#define KdBreakPointWithStatus(s)
-
-#endif /* !DBG */
-
-#if defined(__GNUC__)
-
-extern NTKERNELAPI BOOLEAN KdDebuggerNotPresent;
-extern NTKERNELAPI BOOLEAN KdDebuggerEnabled;
-#define KD_DEBUGGER_ENABLED     KdDebuggerEnabled
-#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
-
-#elif defined(_NTDDK_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
-
-extern NTKERNELAPI PBOOLEAN KdDebuggerNotPresent;
-extern NTKERNELAPI PBOOLEAN KdDebuggerEnabled;
-#define KD_DEBUGGER_ENABLED     *KdDebuggerEnabled
-#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
-
-#else
-
-extern BOOLEAN KdDebuggerNotPresent;
-extern BOOLEAN KdDebuggerEnabled;
-#define KD_DEBUGGER_ENABLED     KdDebuggerEnabled
-#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
-
-#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
@@ -7587,15 +3758,6 @@ HalAllocateAdapterChannel(
   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
@@ -7836,12 +3998,8 @@ 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