Add NDK 1.00-pre. Needs some TLC in umtypes.h and a lot of fixes. Not used anywhere...
authorAlex Ionescu <aionescu@gmail.com>
Sat, 18 Jun 2005 23:33:40 +0000 (23:33 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Sat, 18 Jun 2005 23:33:40 +0000 (23:33 +0000)
svn path=/trunk/; revision=16066

30 files changed:
reactos/include/ndk/cctypes.h [new file with mode: 0644]
reactos/include/ndk/extypes.h [new file with mode: 0644]
reactos/include/ndk/halfuncs.h [new file with mode: 0644]
reactos/include/ndk/haltypes.h [new file with mode: 0644]
reactos/include/ndk/i386/floatsave.h [new file with mode: 0644]
reactos/include/ndk/i386/segment.h [new file with mode: 0644]
reactos/include/ndk/inbvfuncs.h [new file with mode: 0644]
reactos/include/ndk/iofuncs.h [new file with mode: 0644]
reactos/include/ndk/iotypes.h [new file with mode: 0644]
reactos/include/ndk/kdfuncs.h [new file with mode: 0644]
reactos/include/ndk/kdtypes.h [new file with mode: 0644]
reactos/include/ndk/kefuncs.h [new file with mode: 0644]
reactos/include/ndk/ketypes.h [new file with mode: 0644]
reactos/include/ndk/ldrfuncs.h [new file with mode: 0644]
reactos/include/ndk/ldrtypes.h [new file with mode: 0644]
reactos/include/ndk/lpctypes.h [new file with mode: 0644]
reactos/include/ndk/mmtypes.h [new file with mode: 0644]
reactos/include/ndk/ntndk.h [new file with mode: 0644]
reactos/include/ndk/obfuncs.h [new file with mode: 0644]
reactos/include/ndk/obtypes.h [new file with mode: 0644]
reactos/include/ndk/potypes.h [new file with mode: 0644]
reactos/include/ndk/psfuncs.h [new file with mode: 0644]
reactos/include/ndk/pstypes.h [new file with mode: 0644]
reactos/include/ndk/rtlfuncs.h [new file with mode: 0644]
reactos/include/ndk/rtltypes.h [new file with mode: 0644]
reactos/include/ndk/sefuncs.h [new file with mode: 0644]
reactos/include/ndk/setypes.h [new file with mode: 0644]
reactos/include/ndk/umtypes.h [new file with mode: 0644]
reactos/include/ndk/zwfuncs.h [new file with mode: 0644]
reactos/include/ndk/zwtypes.h [new file with mode: 0644]

diff --git a/reactos/include/ndk/cctypes.h b/reactos/include/ndk/cctypes.h
new file mode 100644 (file)
index 0000000..283bd17
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/cctypes.h
+ * PURPOSE:         Definitions for exported Cache Manager Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+
+#ifndef _CCTYPES_H
+#define _CCTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+extern ULONG NTOSAPI CcFastMdlReadWait;
+extern ULONG NTOSAPI CcFastReadNotPossible;
+extern ULONG NTOSAPI CcFastReadWait;
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+#endif
+
diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h
new file mode 100644 (file)
index 0000000..145ad62
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/extypes.h
+ * PURPOSE:         Definitions for exported Executive Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+
+#ifndef _EXTYPES_H
+#define _EXTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+extern POBJECT_TYPE NTOSAPI ExIoCompletionType;
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _HARDERROR_RESPONSE_OPTION 
+{
+    OptionAbortRetryIgnore,
+    OptionOk,
+    OptionOkCancel,
+    OptionRetryCancel,
+    OptionYesNo,
+    OptionYesNoCancel,
+    OptionShutdownSystem
+} HARDERROR_RESPONSE_OPTION, *PHARDERROR_RESPONSE_OPTION;
+
+typedef enum _HARDERROR_RESPONSE 
+{
+    ResponseReturnToCaller,
+    ResponseNotHandled,
+    ResponseAbort,
+    ResponseCancel,
+    ResponseIgnore,
+    ResponseNo,
+    ResponseOk,
+    ResponseRetry,
+    ResponseYes
+} HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
+
+/* TYPES *********************************************************************/
+
+#endif
+
diff --git a/reactos/include/ndk/halfuncs.h b/reactos/include/ndk/halfuncs.h
new file mode 100644 (file)
index 0000000..435dfaf
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/halfuncs.h
+ * PURPOSE:         Prototypes for exported HAL Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _HALFUNCS_H
+#define _HALFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "haltypes.h"
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+VOID
+STDCALL
+HalAcquireDisplayOwnership(
+    IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters
+);
+
+BOOLEAN
+STDCALL
+HalAllProcessorsStarted(VOID);
+
+NTSTATUS
+STDCALL
+HalAllocateAdapterChannel(
+    IN PADAPTER_OBJECT AdapterObject,
+    IN PWAIT_CONTEXT_BLOCK WaitContextBlock,
+    IN ULONG NumberOfMapRegisters,
+    IN PDRIVER_CONTROL ExecutionRoutine
+);
+
+BOOLEAN 
+STDCALL
+HalBeginSystemInterrupt(
+    ULONG Vector,
+    KIRQL Irql,
+    PKIRQL OldIrql
+);
+
+BOOLEAN
+STDCALL
+HalDisableSystemInterrupt(
+    ULONG Vector,
+    KIRQL Irql
+);
+
+VOID
+STDCALL
+HalDisplayString (
+    IN PCHAR String
+);
+
+BOOLEAN
+STDCALL
+HalEnableSystemInterrupt(
+    ULONG Vector,
+    KIRQL Irql,
+    KINTERRUPT_MODE InterruptMode
+);
+
+VOID
+STDCALL
+HalEndSystemInterrupt(
+    KIRQL Irql,
+    ULONG Vector
+);
+
+BOOLEAN
+STDCALL
+HalGetEnvironmentVariable(
+    PCH Name,
+    PCH Value,
+    USHORT ValueLength
+);
+
+VOID
+STDCALL
+HalInitializeProcessor(
+    ULONG ProcessorNumber,
+    PVOID ProcessorStack
+);
+
+BOOLEAN
+STDCALL
+HalInitSystem(
+    ULONG BootPhase,
+    PLOADER_PARAMETER_BLOCK LoaderBlock
+);
+
+BOOLEAN
+STDCALL
+HalQueryDisplayOwnership(VOID);
+
+VOID
+STDCALL
+HalReportResourceUsage(VOID);
+
+VOID
+FASTCALL
+HalRequestSoftwareInterrupt(
+    KIRQL SoftwareInterruptRequested
+);
+
+VOID
+STDCALL
+HalReleaseDisplayOwnership(VOID);
+
+VOID
+STDCALL
+HalReturnToFirmware(
+    FIRMWARE_ENTRY Action
+);
+
+VOID
+STDCALL
+HalRequestIpi(
+    ULONG Unknown
+);
+
+BOOLEAN
+STDCALL
+HalSetEnvironmentVariable(
+    IN PCH Name,
+    IN PCH Value
+);
+
+BOOLEAN
+STDCALL
+HalStartNextProcessor(
+    ULONG Unknown1,
+    ULONG Unknown2
+);
+              
+VOID
+STDCALL
+IoAssignDriveLetters(
+    struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
+    PSTRING NtDeviceName,
+    PUCHAR NtSystemPath,
+    PSTRING NtSystemPathString
+);
+
+#endif
diff --git a/reactos/include/ndk/haltypes.h b/reactos/include/ndk/haltypes.h
new file mode 100644 (file)
index 0000000..220a4a8
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/haltypes.h
+ * PURPOSE:         Definitions for HAL/BLDR types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _HALTYPES_H
+#define _HALTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+#include <ddk/ntdddisk.h>
+
+/* EXPORTED DATA *************************************************************/
+extern ULONG NTOSAPI KdComPortInUse;
+
+/* CONSTANTS *****************************************************************/
+
+/* Boot Flags */
+#define MB_FLAGS_MEM_INFO         (0x1)
+#define MB_FLAGS_BOOT_DEVICE      (0x2)
+#define MB_FLAGS_COMMAND_LINE     (0x4)
+#define MB_FLAGS_MODULE_INFO      (0x8)
+#define MB_FLAGS_AOUT_SYMS        (0x10)
+#define MB_FLAGS_ELF_SYMS         (0x20)
+#define MB_FLAGS_MMAP_INFO        (0x40)
+#define MB_FLAGS_DRIVES_INFO      (0x80)
+#define MB_FLAGS_CONFIG_TABLE     (0x100)
+#define MB_FLAGS_BOOT_LOADER_NAME (0x200)
+#define MB_FLAGS_APM_TABLE        (0x400)
+#define MB_FLAGS_GRAPHICS_TABLE   (0x800)
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _LOADER_MODULE 
+{
+   ULONG ModStart;
+   ULONG ModEnd;
+   ULONG String;
+   ULONG Reserved;
+} LOADER_MODULE, *PLOADER_MODULE;
+
+typedef struct _LOADER_PARAMETER_BLOCK 
+{
+   ULONG Flags;
+   ULONG MemLower;
+   ULONG MemHigher;
+   ULONG BootDevice;
+   ULONG CommandLine;
+   ULONG ModsCount;
+   ULONG ModsAddr;
+   UCHAR Syms[12];
+   ULONG MmapLength;
+   ULONG MmapAddr;
+   ULONG DrivesCount;
+   ULONG DrivesAddr;
+   ULONG ConfigTable;
+   ULONG BootLoaderName;
+} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
+
+typedef struct _DRIVE_LAYOUT_INFORMATION 
+{
+    DWORD PartitionCount;
+    DWORD Signature;
+    PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION;
+
+#endif
+
diff --git a/reactos/include/ndk/i386/floatsave.h b/reactos/include/ndk/i386/floatsave.h
new file mode 100644 (file)
index 0000000..878c22e
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef __NAPI_I386_FLOATSAVE_H__\r
+#define __NAPI_I386_FLOATSAVE_H__\r
+\r
+#define FLOAT_SAVE_CONTROL (0xFFFF037F)\r
+#define FLOAT_SAVE_STATUS  (0xFFFF0000)\r
+#define FLOAT_SAVE_TAG     (0xFFFFFFFF)\r
+#define FLOAT_SAVE_DATA    (0xFFFF0000)\r
+\r
+#endif /* __NAPI_I386_FLOATSAVE_H__ */\r
+\r
+/* EOF */\r
diff --git a/reactos/include/ndk/i386/segment.h b/reactos/include/ndk/i386/segment.h
new file mode 100644 (file)
index 0000000..0c460a8
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _ASM_SEGMENT_H\r
+#define _ASM_SEGMENT_H\r
+\r
+#define KERNEL_CS            (0x8)\r
+#define KERNEL_DS            (0x10)\r
+#define USER_CS              (0x18 + 0x3)\r
+#define USER_DS              (0x20 + 0x3)\r
+#define RESERVED_FOR_TSS     (0x28)\r
+#define PCR_SELECTOR         (0x30)\r
+#define TEB_SELECTOR         (0x38 + 0x3)\r
+\r
+#endif /* _ASM_SEGMENT_H */\r
diff --git a/reactos/include/ndk/inbvfuncs.h b/reactos/include/ndk/inbvfuncs.h
new file mode 100644 (file)
index 0000000..925b0e2
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/haltypes.h
+ * PURPOSE:         Prototypes for Boot Video Driver not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _INBVFUNCS_H
+#define _INBVFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+VOID
+STDCALL
+InbvAcquireDisplayOwnership(VOID);
+
+BOOLEAN
+STDCALL
+InbvCheckDisplayOwnership(VOID);
+
+BOOLEAN
+STDCALL
+InbvDisplayString(
+    IN PCHAR String
+);
+
+VOID
+STDCALL
+InbvEnableBootDriver(
+    IN BOOLEAN Enable
+);
+
+BOOLEAN
+STDCALL
+InbvEnableDisplayString(
+    IN BOOLEAN Enable
+);
+
+VOID
+STDCALL
+InbvInstallDisplayStringFilter(
+    IN PVOID Unknown
+);
+
+BOOLEAN
+STDCALL
+InbvIsBootDriverInstalled(VOID);
+
+VOID
+STDCALL
+InbvNotifyDisplayOwnershipLost(
+    IN PVOID Callback
+);
+
+BOOLEAN
+STDCALL
+InbvResetDisplay(VOID);
+
+VOID
+STDCALL
+InbvSetScrollRegion(
+    IN ULONG Left,
+    IN ULONG Top,
+    IN ULONG Width,
+    IN ULONG Height
+);
+
+VOID
+STDCALL
+InbvSetTextColor(
+    IN ULONG Color
+);
+
+VOID
+STDCALL
+InbvSolidColorFill(
+    IN ULONG Left,
+    IN ULONG Top,
+    IN ULONG Width,
+    IN ULONG Height,
+    IN ULONG Color
+);
+
+VOID
+STDCALL
+VidCleanUp(VOID);
+
+BOOLEAN
+STDCALL
+VidInitialize(VOID);
+
+BOOLEAN
+STDCALL
+VidResetDisplay(VOID);
+
+BOOLEAN
+STDCALL
+VidIsBootDriverInstalled(VOID);
+
+#endif
diff --git a/reactos/include/ndk/iofuncs.h b/reactos/include/ndk/iofuncs.h
new file mode 100644 (file)
index 0000000..d9a45d2
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/iofuncs.h
+ * PURPOSE:         Definitions for exported I/O Manager Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+
+#ifndef _IOFUNCS_H
+#define _IOFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+#endif
+
diff --git a/reactos/include/ndk/iotypes.h b/reactos/include/ndk/iotypes.h
new file mode 100644 (file)
index 0000000..42e4b76
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/iotypes.h
+ * PURPOSE:         Definitions for exported I/O Manager Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+
+#ifndef _IOTYPES_H
+#define _IOTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+extern POBJECT_TYPE NTOSAPI IoAdapterObjectType;
+extern POBJECT_TYPE NTOSAPI IoDeviceHandlerObjectType;
+extern POBJECT_TYPE NTOSAPI IoDeviceObjectType;
+extern POBJECT_TYPE NTOSAPI IoDriverObjectType;
+extern POBJECT_TYPE NTOSAPI IoFileObjectType;
+extern ULONG NTOSAPI IoReadOperationCount;
+extern ULONGLONG NTOSAPI IoReadTransferCount;
+extern ULONG NTOSAPI IoWriteOperationCount;
+extern ULONGLONG NTOSAPI IoWriteTransferCount;
+extern KSPIN_LOCK NTOSAPI IoStatisticsLock;
+
+/* CONSTANTS *****************************************************************/
+
+/* I/O Types */
+#define IO_TYPE_DRIVER 4L
+#define IO_TYPE_TIMER 9L
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _MAILSLOT_CREATE_PARAMETERS 
+{
+    ULONG           MailslotQuota;
+    ULONG           MaximumMessageSize;
+    LARGE_INTEGER   ReadTimeout;
+    BOOLEAN         TimeoutSpecified;
+} MAILSLOT_CREATE_PARAMETERS, *PMAILSLOT_CREATE_PARAMETERS;
+
+typedef struct _NAMED_PIPE_CREATE_PARAMETERS 
+{
+    ULONG           NamedPipeType;
+    ULONG           ReadMode;
+    ULONG           CompletionMode;
+    ULONG           MaximumInstances;
+    ULONG           InboundQuota;
+    ULONG           OutboundQuota;
+    LARGE_INTEGER   DefaultTimeout;
+    BOOLEAN         TimeoutSpecified;
+} NAMED_PIPE_CREATE_PARAMETERS, *PNAMED_PIPE_CREATE_PARAMETERS;
+
+typedef struct _IO_TIMER 
+{
+   USHORT Type;
+   USHORT TimerEnabled;
+   LIST_ENTRY IoTimerList;
+   PIO_TIMER_ROUTINE TimerRoutine;
+   PVOID Context;
+   PDEVICE_OBJECT DeviceObject;
+} IO_TIMER, *PIO_TIMER;
+
+#endif
+
diff --git a/reactos/include/ndk/kdfuncs.h b/reactos/include/ndk/kdfuncs.h
new file mode 100644 (file)
index 0000000..187e53f
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/kdfuncs.h
+ * PURPOSE:         Prototypes for Kernel Debugger Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _KDFUNCS_H
+#define _KDFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "kdtypes.h"
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+BYTE
+STDCALL
+KdPollBreakIn(VOID);
+
+BOOLEAN
+STDCALL
+KdPortInitialize(
+    PKD_PORT_INFORMATION PortInformation,
+    DWORD Unknown1,
+    DWORD Unknown2
+);
+
+BOOLEAN
+STDCALL
+KdPortInitializeEx(
+    PKD_PORT_INFORMATION PortInformation,
+    DWORD Unknown1,
+    DWORD Unknown2
+);
+
+BOOLEAN
+STDCALL
+KdPortGetByte(
+    PUCHAR ByteRecieved
+);
+
+BOOLEAN
+STDCALL
+KdPortGetByteEx(
+    PKD_PORT_INFORMATION PortInformation,
+    PUCHAR ByteRecieved
+);
+
+BOOLEAN
+STDCALL
+KdPortPollByte(
+    PUCHAR ByteRecieved
+);
+
+BOOLEAN
+STDCALL
+KdPortPollByteEx(
+    PKD_PORT_INFORMATION PortInformation,
+    PUCHAR ByteRecieved
+);
+
+VOID
+STDCALL
+KdPortPutByte(
+    UCHAR ByteToSend
+);
+
+VOID
+STDCALL
+KdPortPutByteEx(
+    PKD_PORT_INFORMATION PortInformation,
+    UCHAR ByteToSend
+);
+
+VOID
+STDCALL
+KdPortRestore(VOID);
+
+VOID
+STDCALL
+KdPortSave (VOID);
+
+BOOLEAN
+STDCALL
+KdPortDisableInterrupts(VOID);
+
+BOOLEAN
+STDCALL
+KdPortEnableInterrupts(VOID);
+
+#endif
diff --git a/reactos/include/ndk/kdtypes.h b/reactos/include/ndk/kdtypes.h
new file mode 100644 (file)
index 0000000..65a6d8f
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/kdtypes.h
+ * PURPOSE:         Definitions for Kernel Debugger Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _KDTYPES_H
+#define _KDTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _KD_PORT_INFORMATION 
+{
+    ULONG ComPort;
+    ULONG BaudRate;
+    ULONG BaseAddress;
+} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
+
+#endif
diff --git a/reactos/include/ndk/kefuncs.h b/reactos/include/ndk/kefuncs.h
new file mode 100644 (file)
index 0000000..384e473
--- /dev/null
@@ -0,0 +1,280 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/kefuncs.h
+ * PURPOSE:         Prototypes for Kernel Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _KEFUNCS_H
+#define _KEFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "ketypes.h"
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+VOID 
+STDCALL
+KeInitializeApc(
+    IN PKAPC  Apc,
+    IN PKTHREAD  Thread,
+    IN KAPC_ENVIRONMENT  TargetEnvironment,
+    IN PKKERNEL_ROUTINE  KernelRoutine,
+    IN PKRUNDOWN_ROUTINE  RundownRoutine OPTIONAL,
+    IN PKNORMAL_ROUTINE  NormalRoutine,
+    IN KPROCESSOR_MODE  Mode,
+    IN PVOID  Context
+);    
+
+VOID
+STDCALL
+KeEnterKernelDebugger(VOID);
+
+VOID
+FASTCALL
+KiAcquireSpinLock(
+    PKSPIN_LOCK SpinLock
+);
+
+VOID
+FASTCALL
+KiReleaseSpinLock(
+    PKSPIN_LOCK SpinLock
+);
+
+VOID
+STDCALL
+KiDeliverApc(
+    IN KPROCESSOR_MODE  PreviousMode,
+    IN PVOID  Reserved,
+    IN PKTRAP_FRAME  TrapFrame
+);
+
+VOID
+STDCALL
+KiDispatchInterrupt(VOID);
+
+
+BOOLEAN
+STDCALL
+KeAreApcsDisabled(
+    VOID
+    );
+
+VOID
+STDCALL
+KeFlushQueuedDpcs(
+    VOID
+    );
+
+ULONG
+STDCALL
+KeGetRecommendedSharedDataAlignment(
+    VOID
+    );
+
+ULONG
+STDCALL
+KeQueryRuntimeThread(
+    IN PKTHREAD Thread,
+    OUT PULONG UserTime
+    );    
+
+BOOLEAN
+STDCALL
+KeSetKernelStackSwapEnable(
+    IN BOOLEAN Enable
+    );
+
+BOOLEAN
+STDCALL
+KeDeregisterBugCheckReasonCallback(
+    IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord
+    );
+
+BOOLEAN
+STDCALL
+KeRegisterBugCheckReasonCallback(
+    IN PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
+    IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
+    IN KBUGCHECK_CALLBACK_REASON Reason,
+    IN PUCHAR Component
+    );
+
+VOID 
+STDCALL
+KeTerminateThread(
+    IN KPRIORITY        Increment       
+);
+
+BOOLEAN
+STDCALL
+KeIsExecutingDpc(
+    VOID
+);
+
+VOID
+STDCALL
+KeSetEventBoostPriority(
+    IN PKEVENT Event,
+    IN PKTHREAD *Thread OPTIONAL
+);
+
+PVOID
+STDCALL
+KeFindConfigurationEntry(
+    IN PVOID Unknown,
+    IN ULONG Class,
+    IN CONFIGURATION_TYPE Type,
+    IN PULONG RegKey
+);
+
+PVOID
+STDCALL
+KeFindConfigurationNextEntry(
+    IN PVOID Unknown,
+    IN ULONG Class,
+    IN CONFIGURATION_TYPE Type,
+    IN PULONG RegKey,
+    IN PVOID *NextLink
+);
+
+VOID
+STDCALL
+KeFlushEntireTb(
+    IN BOOLEAN Unknown,
+    IN BOOLEAN CurrentCpuOnly
+);
+
+VOID
+STDCALL
+KeRevertToUserAffinityThread(
+    VOID
+);
+
+VOID
+STDCALL
+KiCoprocessorError(
+    VOID
+);
+
+VOID
+STDCALL
+KiUnexpectedInterrupt(
+    VOID
+);
+
+VOID
+STDCALL
+KeSetDmaIoCoherency(
+    IN ULONG Coherency
+);
+
+VOID
+STDCALL
+KeSetProfileIrql(
+    IN KIRQL ProfileIrql
+);
+
+NTSTATUS
+STDCALL
+KeSetAffinityThread(
+    PKTHREAD Thread,
+    KAFFINITY Affinity
+);
+            
+VOID
+STDCALL
+KeSetSystemAffinityThread(
+    IN KAFFINITY Affinity
+);
+
+NTSTATUS
+STDCALL
+KeUserModeCallback(
+    IN ULONG    FunctionID,
+    IN PVOID    InputBuffer,
+    IN ULONG    InputLength,
+    OUT PVOID    *OutputBuffer,
+    OUT PULONG    OutputLength
+);
+
+VOID
+STDCALL
+KeSetTimeIncrement(
+    IN ULONG MaxIncrement,
+    IN ULONG MinIncrement
+);
+
+VOID
+STDCALL
+KeInitializeInterrupt(
+    PKINTERRUPT InterruptObject,
+    PKSERVICE_ROUTINE ServiceRoutine,
+    PVOID ServiceContext,
+    PKSPIN_LOCK SpinLock,
+    ULONG Vector,
+    KIRQL Irql,
+    KIRQL SynchronizeIrql,
+    KINTERRUPT_MODE InterruptMode,
+    BOOLEAN ShareVector,
+    CHAR ProcessorNumber,
+    BOOLEAN FloatingSave
+);
+    
+BOOLEAN
+STDCALL 
+KeConnectInterrupt(
+    PKINTERRUPT InterruptObject
+);
+
+VOID 
+STDCALL 
+KeDisconnectInterrupt(
+    PKINTERRUPT InterruptObject
+);
+
+struct _KPROCESS* 
+KeGetCurrentProcess(
+    VOID
+);
+
+VOID
+KeSetGdtSelector(
+    ULONG Entry,
+    ULONG Value1,
+    ULONG Value2
+);
+
+LONG
+STDCALL
+KeReadStateMutant(
+    IN PKMUTANT Mutant
+);
+
+VOID
+STDCALL
+KeInitializeMutant(
+    IN PKMUTANT Mutant,
+    IN BOOLEAN InitialOwner
+);
+                
+LONG
+STDCALL
+KeReleaseMutant(
+    IN PKMUTANT Mutant,
+    IN KPRIORITY Increment,
+    IN BOOLEAN Abandon,
+    IN BOOLEAN Wait
+);
+
+NTSTATUS
+STDCALL
+KeRaiseUserException(
+    IN NTSTATUS ExceptionCode
+    );
+    
+#endif
diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h
new file mode 100644 (file)
index 0000000..bf159f3
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/ketypes.h
+ * PURPOSE:         Definitions for Kernel Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _KETYPES_H
+#define _KETYPES_H
+
+/* DEPENDENCIES **************************************************************/
+#include "haltypes.h"
+
+/* EXPORTED DATA *************************************************************/
+extern CHAR NTOSAPI KeNumberProcessors;
+extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock;
+extern ULONG NTOSAPI KeDcacheFlushCount;
+extern ULONG NTOSAPI KeIcacheFlushCount;
+extern KAFFINITY NTOSAPI KeActiveProcessors;
+extern ULONG NTOSAPI KiDmaIoCoherency; /* RISC Architectures only */
+extern ULONG NTOSAPI KeMaximumIncrement;
+extern ULONG NTOSAPI KeMinimumIncrement;
+extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTable[SSDT_MAX_ENTRIES];
+extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
+
+/* CONSTANTS *****************************************************************/
+#define SSDT_MAX_ENTRIES 4
+#define PROCESSOR_FEATURE_MAX 64
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef enum _KAPC_ENVIRONMENT 
+{
+    OriginalApcEnvironment,
+    AttachedApcEnvironment,
+    CurrentApcEnvironment
+} KAPC_ENVIRONMENT;
+
+typedef struct _KDPC_DATA 
+{
+    LIST_ENTRY  DpcListHead;
+    ULONG  DpcLock;
+    ULONG  DpcQueueDepth;
+    ULONG  DpcCount;
+} KDPC_DATA, *PKDPC_DATA;
+
+typedef struct _KTRAP_FRAME 
+{
+    PVOID DebugEbp;
+    PVOID DebugEip;
+    PVOID DebugArgMark;
+    PVOID DebugPointer;
+    PVOID TempCs;
+    PVOID TempEip;
+    ULONG Dr0;
+    ULONG Dr1;
+    ULONG Dr2;
+    ULONG Dr3;
+    ULONG Dr6;
+    ULONG Dr7;
+    USHORT Gs;
+    USHORT Reserved1;
+    USHORT Es;
+    USHORT Reserved2;
+    USHORT Ds;
+    USHORT Reserved3;
+    ULONG Edx;
+    ULONG Ecx;
+    ULONG Eax;
+    ULONG PreviousMode;
+    PVOID ExceptionList;
+    USHORT Fs;
+    USHORT Reserved4;
+    ULONG Edi;
+    ULONG Esi;
+    ULONG Ebx;
+    ULONG Ebp;
+    ULONG ErrorCode;
+    ULONG Eip;
+    ULONG Cs;
+    ULONG Eflags;
+    ULONG Esp;
+    USHORT Ss;
+    USHORT Reserved5;
+    USHORT V86_Es;
+    USHORT Reserved6;
+    USHORT V86_Ds;
+    USHORT Reserved7;
+    USHORT V86_Fs;
+    USHORT Reserved8;
+    USHORT V86_Gs;
+    USHORT Reserved9;
+} KTRAP_FRAME, *PKTRAP_FRAME;
+
+/* i386 Doesn't have Exception Frames */
+typedef struct _KEXCEPTION_FRAME {
+
+} KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
+
+typedef struct _KINTERRUPT 
+{
+    CSHORT              Type;
+    CSHORT              Size;
+    LIST_ENTRY          InterruptListEntry;
+    PKSERVICE_ROUTINE   ServiceRoutine;
+    PVOID               ServiceContext;
+    KSPIN_LOCK          SpinLock;
+    ULONG               TickCount;
+    PKSPIN_LOCK         ActualLock;
+    PVOID               DispatchAddress;
+    ULONG               Vector;
+    KIRQL               Irql;
+    KIRQL               SynchronizeIrql;
+    BOOLEAN             FloatingSave;
+    BOOLEAN             Connected;
+    CHAR                Number;
+    UCHAR               ShareVector;
+    KINTERRUPT_MODE     Mode;
+    ULONG               ServiceCount;
+    ULONG               DispatchCount;
+    ULONG               DispatchCode[106];
+} KINTERRUPT, *PKINTERRUPT;
+
+/* FIXME: Add KOBJECTS Here */
+
+#endif
diff --git a/reactos/include/ndk/ldrfuncs.h b/reactos/include/ndk/ldrfuncs.h
new file mode 100644 (file)
index 0000000..d74d249
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/ldrfuncs.h
+ * PURPOSE:         Defintions for Loader Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _LDRFUNCS_H
+#define _LDRFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "ldrtypes.h"
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+NTSTATUS
+STDCALL
+LdrAccessResource(
+    IN  PVOID BaseAddress,
+    IN  PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry,
+    OUT PVOID *Resource OPTIONAL,
+    OUT PULONG Size OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+LdrFindResource_U(
+    IN  PVOID BaseAddress,
+    IN  PLDR_RESOURCE_INFO ResourceInfo,
+    IN  ULONG Level,
+    OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
+);
+                  
+#endif
diff --git a/reactos/include/ndk/ldrtypes.h b/reactos/include/ndk/ldrtypes.h
new file mode 100644 (file)
index 0000000..cac4057
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/ldrtypes.h
+ * PURPOSE:         Definitions for Loader Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _LDRTYPES_H
+#define _LDRTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+#define IMAGE_SCN_TYPE_REG 0x00000000
+#define IMAGE_SCN_TYPE_DSECT 0x00000001
+#define IMAGE_SCN_TYPE_NOLOAD 0x00000002
+#define IMAGE_SCN_TYPE_GROUP 0x00000004
+#define IMAGE_SCN_TYPE_COPY 0x00000010
+
+#define IMAGE_FILE_MACHINE_ARM 0x000001C0
+#define IMAGE_FILE_MACHINE_IA64 0x00000200
+#define IMAGE_FILE_MACHINE_ALPHA64 0x00000284
+#define IMAGE_FILE_MACHINE_AMD64 0x00008664
+#define IMAGE_FILE_MACHINE_M32R 0x00009041
+#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
+
+#define RESOURCE_TYPE_LEVEL      0
+#define RESOURCE_NAME_LEVEL      1
+#define RESOURCE_LANGUAGE_LEVEL  2
+#define RESOURCE_DATA_LEVEL      3
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/             
+/* FIXME: Update with _LDR_DATA_TABLE_ENTRY and LDR_ flags */
+typedef struct _PEB_LDR_DATA
+{
+    ULONG               Length;
+    BOOLEAN             Initialized;
+    PVOID               SsHandle;
+    LIST_ENTRY          InLoadOrderModuleList;
+    LIST_ENTRY          InMemoryOrderModuleList;
+    LIST_ENTRY          InInitializationOrderModuleList;
+    PVOID               EntryInProgress;
+} PEB_LDR_DATA, *PPEB_LDR_DATA;
+
+/* FIXME: Update with _LDR_DATA_TABLE_ENTRY and LDR_ flags */
+typedef struct _LDR_MODULE
+{
+    LIST_ENTRY          InLoadOrderModuleList;
+    LIST_ENTRY          InMemoryOrderModuleList;
+    LIST_ENTRY          InInitializationOrderModuleList;
+    void*               BaseAddress;
+    void*               EntryPoint;
+    ULONG               SizeOfImage;
+    UNICODE_STRING      FullDllName;
+    UNICODE_STRING      BaseDllName;
+    ULONG               Flags;
+    SHORT               LoadCount;
+    SHORT               TlsIndex;
+    HANDLE              SectionHandle;
+    ULONG               CheckSum;
+    ULONG               TimeDateStamp;
+} LDR_MODULE, *PLDR_MODULE;
+
+typedef struct _LDR_RESOURCE_INFO 
+{
+    ULONG Type;
+    ULONG Name;
+    ULONG Language;
+} LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
+
+#endif
diff --git a/reactos/include/ndk/lpctypes.h b/reactos/include/ndk/lpctypes.h
new file mode 100644 (file)
index 0000000..54a6dba
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/lpctypes.h
+ * PURPOSE:         Definitions for Local Procedure Call Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _LPCTYPES_H
+#define _LPCTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+#define LPC_MESSAGE_BASE_SIZE 4
+#define MAX_MESSAGE_DATA      (0x130)
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _LPC_TYPE 
+{
+    LPC_NEW_MESSAGE,
+    LPC_REQUEST,
+    LPC_REPLY,
+    LPC_DATAGRAM,
+    LPC_LOST_REPLY,
+    LPC_PORT_CLOSED,
+    LPC_CLIENT_DIED,
+    LPC_EXCEPTION,
+    LPC_DEBUG_EVENT,
+    LPC_ERROR_EVENT,
+    LPC_CONNECTION_REQUEST,
+    LPC_CONNECTION_REFUSED,
+    LPC_MAXIMUM
+} LPC_TYPE;
+
+/* TYPES *********************************************************************/
+
+/* FIXME: USE REAL DEFINITION */
+typedef struct _LPC_MESSAGE {
+    USHORT  DataSize;
+    USHORT  MessageSize;
+    USHORT  MessageType;
+    USHORT  VirtualRangesOffset;
+    CLIENT_ID  ClientId;
+    ULONG  MessageId;
+    ULONG  SectionSize;
+} LPC_MESSAGE, *PLPC_MESSAGE;
+
+/* FIXME: USE REAL DEFINITION */
+typedef struct _LPC_SECTION_WRITE 
+{
+    ULONG  Length;
+    HANDLE  SectionHandle;
+    ULONG  SectionOffset;
+    ULONG  ViewSize;
+    PVOID  ViewBase;
+    PVOID  TargetViewBase;
+} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
+
+/* FIXME: USE REAL DEFINITION */
+typedef struct _LPC_SECTION_READ 
+{
+    ULONG  Length;
+    ULONG  ViewSize;
+    PVOID  ViewBase;
+} LPC_SECTION_READ, *PLPC_SECTION_READ; 
+
+/* FIXME: USE REAL DEFINITION */
+typedef struct _LPC_MAX_MESSAGE 
+{
+    LPC_MESSAGE Header;
+    BYTE Data[MAX_MESSAGE_DATA];
+} LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
+
+#endif
diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h
new file mode 100644 (file)
index 0000000..3bb8e02
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/mmtypes.h
+ * PURPOSE:         Definitions for Memory Manager Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _MMTYPES_H
+#define _MMTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _PP_LOOKASIDE_LIST 
+{
+   struct _GENERAL_LOOKASIDE *P;
+   struct _GENERAL_LOOKASIDE *L;
+} PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
+
+typedef struct _ADDRESS_RANGE
+{
+   ULONG BaseAddrLow;
+   ULONG BaseAddrHigh;
+   ULONG LengthLow;
+   ULONG LengthHigh;
+   ULONG Type;
+} ADDRESS_RANGE, *PADDRESS_RANGE;
+
+#endif
diff --git a/reactos/include/ndk/ntndk.h b/reactos/include/ndk/ntndk.h
new file mode 100644 (file)
index 0000000..e9365e2
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/ntndk.h
+ * PURPOSE:         Main Native Development Kit Header file to include all others.
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _NT_NDK_
+#define _NT_NDK_
+
+#ifndef NTOS_MODE_USER
+    /* Kernel-Mode NDK */
+    #include "kdtypes.h"    /* Kernel Debugger Types */
+    #include "kdfuncs.h"    /* Kernel Debugger Functions */
+    #include "cctypes.h"    /* Cache Manager Types */
+    #include "extypes.h"    /* Executive Types */
+    #include "haltypes.h"   /* Hardware Abstraction Layer Types */
+    #include "halfuncs.h"   /* Hardware Abstraction Layer Functions */
+    #include "inbvfuncs.h"  /* Initialization Boot Video Functions */
+    #include "iotypes.h"    /* Input/Output Manager Types */
+    #include "iofuncs.h"    /* Input/Output Manager Functions */
+    #include "ketypes.h"    /* Kernel Types */
+    #include "kefuncs.h"    /* Kernel Functions */
+    #include "ldrfuncs.h"   /* Loader Functions */
+    #include "lpctypes.h"   /* Local Procedure Call Types */
+    #include "mmtypes.h"    /* Memory Manager Types */
+    #include "obtypes.h"    /* Object Manager Types */
+    #include "obfuncs.h"    /* Object Manager Functions */
+    #include "potypes.h"    /* Power Manager Types */
+    #include "psfuncs.h"    /* Process Manager Functions */
+    #include "setypes.h"    /* Security Subsystem Types */
+    #include "sefuncs.h"    /* Security Subsystem Functions */
+#else
+    /* User-Mode NDK */
+    #include "umtypes.h"    /* Native Types in DDK/IFS but not in PSDK */
+#endif
+
+/* Shared NDK */
+#include "ldrtypes.h"       /* Loader Types */
+#include "pstypes.h"        /* Process Manager Types */
+#include "rtltypes.h"       /* Runtime Library Types */
+#include "rtlfuncs.h"       /* Runtime Library Functions */
+#include "zwtypes.h"        /* Native Types */
+#include "zwfuncs.h"        /* Native Functions (System Calls) */
+#include "i386/floatsave.h" /* Floating Point Save Area Definitions for i386 */
+#include "i386/segment.h"   /* Kernel CPU Segment Definitions for i386 */
+
+#endif 
diff --git a/reactos/include/ndk/obfuncs.h b/reactos/include/ndk/obfuncs.h
new file mode 100644 (file)
index 0000000..e583239
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/obfuncs.h
+ * PURPOSE:         Protoypes for OBject Manager Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _OBFUNCS_H
+#define _OBFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+NTSTATUS
+STDCALL
+ObCreateObject (
+    IN KPROCESSOR_MODE      ObjectAttributesAccessMode OPTIONAL,
+    IN POBJECT_TYPE         ObjectType,
+    IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
+    IN KPROCESSOR_MODE      AccessMode,
+    IN OUT PVOID            ParseContext OPTIONAL,
+    IN ULONG                ObjectSize,
+    IN ULONG                PagedPoolCharge OPTIONAL,
+    IN ULONG                NonPagedPoolCharge OPTIONAL,
+    OUT PVOID               *Object
+);
+
+ULONG
+STDCALL
+ObGetObjectPointerCount (
+    IN PVOID Object
+);
+
+NTSTATUS
+STDCALL
+ObInsertObject (
+    IN PVOID            Object,
+    IN PACCESS_STATE    PassedAccessState OPTIONAL,
+    IN ACCESS_MASK      DesiredAccess,
+    IN ULONG            AdditionalReferences,
+    OUT PVOID           *ReferencedObject OPTIONAL,
+    OUT PHANDLE         Handle
+);
+
+VOID
+STDCALL
+ObMakeTemporaryObject (
+    IN PVOID Object
+);
+
+NTSTATUS
+STDCALL
+ObOpenObjectByPointer (
+    IN PVOID            Object,
+    IN ULONG            HandleAttributes,
+    IN PACCESS_STATE    PassedAccessState OPTIONAL,
+    IN ACCESS_MASK      DesiredAccess OPTIONAL,
+    IN POBJECT_TYPE     ObjectType OPTIONAL,
+    IN KPROCESSOR_MODE  AccessMode,
+    OUT PHANDLE         Handle
+);
+
+NTSTATUS
+STDCALL
+ObQueryNameString (
+    IN PVOID                        Object,
+    OUT POBJECT_NAME_INFORMATION    ObjectNameInfo,
+    IN ULONG                        Length,
+    OUT PULONG                      ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ObQueryObjectAuditingByHandle (
+    IN HANDLE       Handle,
+    OUT PBOOLEAN    GenerateOnClose
+);
+
+NTSTATUS
+STDCALL
+ObReferenceObjectByName (
+    IN PUNICODE_STRING  ObjectName,
+    IN ULONG            Attributes,
+    IN PACCESS_STATE    PassedAccessState OPTIONAL,
+    IN ACCESS_MASK      DesiredAccess OPTIONAL,
+    IN POBJECT_TYPE     ObjectType,
+    IN KPROCESSOR_MODE  AccessMode,
+    IN OUT PVOID        ParseContext OPTIONAL,
+    OUT PVOID           *Object
+);
+
+#endif
diff --git a/reactos/include/ndk/obtypes.h b/reactos/include/ndk/obtypes.h
new file mode 100644 (file)
index 0000000..7ab7782
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/obtypes.h
+ * PURPOSE:         Defintions for Object Manager Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _OBTYPES_H
+#define _OBTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+extern NTOSAPI POBJECT_TYPE ObDirectoryType;
+extern NTOSAPI struct DEVICE_MAP* ObSystemDeviceMap;
+
+/* CONSTANTS *****************************************************************/
+
+/* Values for DosDeviceDriveType */
+#define DOSDEVICE_DRIVE_UNKNOWN                0
+#define DOSDEVICE_DRIVE_CALCULATE      1
+#define DOSDEVICE_DRIVE_REMOVABLE      2
+#define DOSDEVICE_DRIVE_FIXED          3
+#define DOSDEVICE_DRIVE_REMOTE         4
+#define DOSDEVICE_DRIVE_CDROM          5
+#define DOSDEVICE_DRIVE_RAMDISK                6
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _OBJECT_BASIC_INFORMATION 
+{
+    ULONG Attributes;
+    ACCESS_MASK GrantedAccess;
+    ULONG HandleCount;
+    ULONG PointerCount;
+    ULONG PagedPoolUsage;
+    ULONG NonPagedPoolUsage;
+    ULONG Reserved[3];
+    ULONG NameInformationLength;
+    ULONG TypeInformationLength;
+    ULONG SecurityDescriptorLength;
+    LARGE_INTEGER CreateTime;
+} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
+
+/* FIXME: Add Object Structures Here */
+
+#endif
diff --git a/reactos/include/ndk/potypes.h b/reactos/include/ndk/potypes.h
new file mode 100644 (file)
index 0000000..bbaf5a9
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/potypes.h
+ * PURPOSE:         Defintions for Power Manager Types not documented in DDK/IFS.
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _POTYPES_H
+#define _POTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _PROCESSOR_IDLE_TIMES 
+{
+    ULONGLONG StartTime;
+    ULONGLONG EndTime;
+    ULONG IdleHandlerReserved[4];
+} PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
+
+typedef struct _PROCESSOR_PERF_STATE 
+{
+    UCHAR PercentFrequency;
+    UCHAR MinCapacity;
+    USHORT Power;
+    UCHAR IncreaseLevel;
+    UCHAR DecreaseLevel;
+    USHORT Flags;
+    ULONG IncreaseTime;
+    ULONG DecreaseTime;
+    ULONG IncreaseCount;
+    ULONG DecreaseCount;
+    ULONGLONG PerformanceTime;
+} PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
+
+typedef struct _PROCESSOR_POWER_STATE 
+{
+    PVOID IdleFunction;
+    ULONG Idle0KernelTimeLimit;
+    ULONG Idle0LastTime;
+    PVOID IdleHandlers;
+    PVOID IdleState;
+    ULONG IdleHandlersCount;
+    ULONGLONG LastCheck;
+    PROCESSOR_IDLE_TIMES IdleTimes;
+    ULONG IdleTime1;
+    ULONG PromotionCheck;
+    ULONG IdleTime2;
+    UCHAR CurrentThrottle;
+    UCHAR ThermalThrottleLimit;
+    UCHAR CurrentThrottleIndex;
+    UCHAR ThermalThrottleIndex;
+    ULONG LastKernelUserTime;
+    ULONG PerfIdleTime;
+    ULONG DebugDelta;
+    ULONG DebugCount;
+    ULONG LastSysTime;
+    ULONG TotalIdleStateTime[3];
+    ULONG TotalIdleTransitions[3];
+    ULONGLONG PreviousC3StateTime;
+    UCHAR KneeThrottleIndex;
+    UCHAR ThrottleLimitIndex;
+    UCHAR PerfStatesCount;
+    UCHAR ProcessorMinThrottle;
+    UCHAR ProcessorMaxThrottle;
+    UCHAR LastBusyPercentage;
+    UCHAR LastC3Percentage;
+    UCHAR LastAdjustedBusyPercentage;
+    ULONG PromotionCount;
+    ULONG DemotionCount;
+    ULONG ErrorCount;
+    ULONG RetryCount;
+    ULONG Flags;
+    LARGE_INTEGER PerfCounterFrequency;
+    ULONG PerfTickCount;
+    KTIMER PerfTimer;
+    KDPC PerfDpc;
+    PROCESSOR_PERF_STATE *PerfStates;
+    PVOID PerfSetThrottle;
+    ULONG LastC3KernelUserTime;
+    ULONG Spare1[1];
+} PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
+
+#endif
diff --git a/reactos/include/ndk/psfuncs.h b/reactos/include/ndk/psfuncs.h
new file mode 100644 (file)
index 0000000..3d82721
--- /dev/null
@@ -0,0 +1,69 @@
+/* $Id: pstypes.h,v 1.1.2.1 2004/10/25 01:24:07 ion Exp $
+ *
+ *  ReactOS Headers
+ *  Copyright (C) 1998-2004 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/psfuncs.h
+ * PURPOSE:         Defintions for Process Manager Functions not documented in DDK/IFS.
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _PSFUNCS_H
+#define _PSFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* FUNCTION TYPES ************************************************************/
+typedef VOID (STDCALL *PPEBLOCKROUTINE)(PVOID);
+
+typedef NTSTATUS 
+(STDCALL *PW32_PROCESS_CALLBACK)(
+    struct _EPROCESS *Process,
+    BOOLEAN Create
+);
+
+typedef NTSTATUS
+(STDCALL *PW32_THREAD_CALLBACK)(
+    struct _ETHREAD *Thread,
+    BOOLEAN Create
+);
+
+
+/* PROTOTYPES ****************************************************************/
+
+VOID
+STDCALL
+PsRevertThreadToSelf(
+    IN struct _ETHREAD* Thread
+);
+
+struct _W32THREAD*
+STDCALL
+PsGetWin32Thread(
+    VOID
+);
+
+struct _W32PROCESS*
+STDCALL
+PsGetWin32Process(
+    VOID
+);
+
+#endif
diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h
new file mode 100644 (file)
index 0000000..e0cafd9
--- /dev/null
@@ -0,0 +1,186 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/pstypes.h
+ * PURPOSE:         Defintions for Process Manager Types not documented in DDK/IFS.
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _PSTYPES_H
+#define _PSTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+#include "ldrtypes.h"
+#include "rtltypes.h"
+
+/* EXPORTED DATA *************************************************************/
+
+extern NTOSAPI struct _EPROCESS* PsInitialSystemProcess;
+extern NTOSAPI POBJECT_TYPE PsProcessType;
+extern NTOSAPI POBJECT_TYPE PsThreadType;
+
+/* CONSTANTS *****************************************************************/
+
+/* These are not exposed to drivers normally */
+#ifndef _NTOS_MODE_USER
+    #define JOB_OBJECT_ASSIGN_PROCESS    (1)
+    #define JOB_OBJECT_SET_ATTRIBUTES    (2)
+    #define JOB_OBJECT_QUERY    (4)
+    #define JOB_OBJECT_TERMINATE    (8)
+    #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES    (16)
+    #define JOB_OBJECT_ALL_ACCESS    (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
+#endif
+
+/* FIXME: This was changed in XP... Ask ThomasW about it */
+#define PROCESS_SET_PORT 0x800
+
+#define THREAD_ALERT 0x4
+
+#define USER_SHARED_DATA (0x7FFE0000)
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+struct _ETHREAD;
+
+typedef struct _CURDIR 
+{
+    UNICODE_STRING DosPath;
+    PVOID Handle;
+} CURDIR, *PCURDIR;
+
+typedef struct _PEB_FREE_BLOCK 
+{
+    struct _PEB_FREE_BLOCK* Next;
+    ULONG Size;
+} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
+
+typedef struct _PEB 
+{
+    UCHAR InheritedAddressSpace;                     /* 00h */
+    UCHAR ReadImageFileExecOptions;                  /* 01h */
+    UCHAR BeingDebugged;                             /* 02h */
+    UCHAR Spare;                                     /* 03h */
+    PVOID Mutant;                                    /* 04h */
+    PVOID ImageBaseAddress;                          /* 08h */
+    PPEB_LDR_DATA Ldr;                               /* 0Ch */
+    PRTL_USER_PROCESS_PARAMETERS ProcessParameters;  /* 10h */
+    PVOID SubSystemData;                             /* 14h */
+    PVOID ProcessHeap;                               /* 18h */
+    PVOID FastPebLock;                               /* 1Ch */
+    PPEBLOCKROUTINE FastPebLockRoutine;              /* 20h */
+    PPEBLOCKROUTINE FastPebUnlockRoutine;            /* 24h */
+    ULONG EnvironmentUpdateCount;                    /* 28h */
+    PVOID* KernelCallbackTable;                      /* 2Ch */
+    PVOID EventLogSection;                           /* 30h */
+    PVOID EventLog;                                  /* 34h */
+    PPEB_FREE_BLOCK FreeList;                        /* 38h */
+    ULONG TlsExpansionCounter;                       /* 3Ch */
+    PVOID TlsBitmap;                                 /* 40h */
+    ULONG TlsBitmapBits[0x2];                        /* 44h */
+    PVOID ReadOnlySharedMemoryBase;                  /* 4Ch */
+    PVOID ReadOnlySharedMemoryHeap;                  /* 50h */
+    PVOID* ReadOnlyStaticServerData;                 /* 54h */
+    PVOID AnsiCodePageData;                          /* 58h */
+    PVOID OemCodePageData;                           /* 5Ch */
+    PVOID UnicodeCaseTableData;                      /* 60h */
+    ULONG NumberOfProcessors;                        /* 64h */
+    ULONG NtGlobalFlag;                              /* 68h */
+    UCHAR Spare2[0x4];                               /* 6Ch */
+    LARGE_INTEGER CriticalSectionTimeout;            /* 70h */
+    ULONG HeapSegmentReserve;                        /* 78h */
+    ULONG HeapSegmentCommit;                         /* 7Ch */
+    ULONG HeapDeCommitTotalFreeThreshold;            /* 80h */
+    ULONG HeapDeCommitFreeBlockThreshold;            /* 84h */
+    ULONG NumberOfHeaps;                             /* 88h */
+    ULONG MaximumNumberOfHeaps;                      /* 8Ch */
+    PVOID** ProcessHeaps;                            /* 90h */
+    PVOID GdiSharedHandleTable;                      /* 94h */
+    PVOID ProcessStarterHelper;                      /* 98h */
+    PVOID GdiDCAttributeList;                        /* 9Ch */
+    PVOID LoaderLock;                                /* A0h */
+    ULONG OSMajorVersion;                            /* A4h */
+    ULONG OSMinorVersion;                            /* A8h */
+    USHORT OSBuildNumber;                            /* ACh */
+    UCHAR SPMajorVersion;                            /* AEh */
+    UCHAR SPMinorVersion;                            /* AFh */
+    ULONG OSPlatformId;                              /* B0h */
+    ULONG ImageSubSystem;                            /* B4h */
+    ULONG ImageSubSystemMajorVersion;                /* B8h */
+    ULONG ImageSubSystemMinorVersion;                /* C0h */
+    ULONG GdiHandleBuffer[0x22];                     /* C4h */
+} PEB;
+
+typedef struct _GDI_TEB_BATCH 
+{
+    ULONG Offset;
+    ULONG HDC;
+    ULONG Buffer[0x136];
+} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
+
+typedef struct _TEB 
+{
+    NT_TIB Tib;                         /* 00h */
+    PVOID EnvironmentPointer;           /* 1Ch */
+    CLIENT_ID Cid;                      /* 20h */
+    PVOID ActiveRpcInfo;                /* 28h */
+    PVOID ThreadLocalStoragePointer;    /* 2Ch */
+    PPEB Peb;                           /* 30h */
+    ULONG LastErrorValue;               /* 34h */
+    ULONG CountOfOwnedCriticalSections; /* 38h */
+    PVOID CsrClientThread;              /* 3Ch */
+    struct _W32THREAD* Win32ThreadInfo; /* 40h */
+    ULONG Win32ClientInfo[0x1F];        /* 44h */
+    PVOID WOW32Reserved;                /* C0h */
+    LCID CurrentLocale;                 /* C4h */
+    ULONG FpSoftwareStatusRegister;     /* C8h */
+    PVOID SystemReserved1[0x36];        /* CCh */
+    PVOID Spare1;                       /* 1A4h */
+    LONG ExceptionCode;                 /* 1A8h */
+    UCHAR SpareBytes1[0x28];            /* 1ACh */
+    PVOID SystemReserved2[0xA];         /* 1D4h */
+    GDI_TEB_BATCH GdiTebBatch;          /* 1FCh */
+    ULONG gdiRgn;                       /* 6DCh */
+    ULONG gdiPen;                       /* 6E0h */
+    ULONG gdiBrush;                     /* 6E4h */
+    CLIENT_ID RealClientId;             /* 6E8h */
+    PVOID GdiCachedProcessHandle;       /* 6F0h */
+    ULONG GdiClientPID;                 /* 6F4h */
+    ULONG GdiClientTID;                 /* 6F8h */
+    PVOID GdiThreadLocaleInfo;          /* 6FCh */
+    PVOID UserReserved[5];              /* 700h */
+    PVOID glDispatchTable[0x118];       /* 714h */
+    ULONG glReserved1[0x1A];            /* B74h */
+    PVOID glReserved2;                  /* BDCh */
+    PVOID glSectionInfo;                /* BE0h */
+    PVOID glSection;                    /* BE4h */
+    PVOID glTable;                      /* BE8h */
+    PVOID glCurrentRC;                  /* BECh */
+    PVOID glContext;                    /* BF0h */
+    NTSTATUS LastStatusValue;           /* BF4h */
+    UNICODE_STRING StaticUnicodeString; /* BF8h */
+    WCHAR StaticUnicodeBuffer[0x105];   /* C00h */
+    PVOID DeallocationStack;            /* E0Ch */
+    PVOID TlsSlots[0x40];               /* E10h */
+    LIST_ENTRY TlsLinks;                /* F10h */
+    PVOID Vdm;                          /* F18h */
+    PVOID ReservedForNtRpc;             /* F1Ch */
+    PVOID DbgSsReserved[0x2];           /* F20h */
+    ULONG HardErrorDisabled;            /* F28h */
+    PVOID Instrumentation[0x10];        /* F2Ch */
+    PVOID WinSockData;                  /* F6Ch */
+    ULONG GdiBatchCount;                /* F70h */
+    USHORT Spare2;                      /* F74h */
+    BOOLEAN IsFiber;                    /* F76h */
+    UCHAR Spare3;                       /* F77h */
+    ULONG Spare4;                       /* F78h */
+    ULONG Spare5;                       /* F7Ch */
+    PVOID ReservedForOle;               /* F80h */
+    ULONG WaitingOnLoaderLock;          /* F84h */
+    ULONG Unknown[11];                  /* F88h */
+    PVOID FlsSlots;                     /* FB4h */
+    PVOID WineDebugInfo;                /* Needed for WINE DLL's  */
+} TEB, *PTEB;
+            
+#endif
diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h
new file mode 100644 (file)
index 0000000..a70d193
--- /dev/null
@@ -0,0 +1,956 @@
+/* $Id: rtlfuncs.h,v 1.1.2.2 2004/10/25 02:57:20 ion Exp $
+ *
+ *  ReactOS Headers
+ *  Copyright (C) 1998-2004 ReactOS Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/rtlfuncs.h
+ * PURPOSE:         Prototypes for Runtime Library Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _RTLFUNCS_H
+#define _RTLFUNCS_H
+
+#include <ndk/rtltypes.h>
+
+/*FIXME: REORGANIZE THIS */
+/* FIXME: SOME FUNCTIONS MUST BE PROTECTED AGAINST DDK/IFS. */
+
+typedef NTSTATUS
+(*PHEAP_ENUMERATION_ROUTINE)(IN PVOID HeapHandle,
+                             IN PVOID UserParam);
+
+typedef EXCEPTION_DISPOSITION 
+(*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, 
+                      PVOID, 
+                      struct _CONTEXT*, 
+                      PVOID);
+
+                      
+#define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
+
+#define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+  PLIST_ENTRY current;\
+\
+  current = (ListHead)->Flink;\
+  while (current != (ListHead))\
+  {\
+    if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
+        (NewEntry)->SortField)\
+    {\
+      break;\
+    }\
+    current = current->Flink;\
+  }\
+\
+  InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+
+#define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+  PLIST_ENTRY current;\
+\
+  current = (ListHead)->Flink;\
+  while (current != (ListHead))\
+  {\
+    if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
+        (NewEntry)->SortField)\
+    {\
+      break;\
+    }\
+    current = current->Flink;\
+  }\
+\
+  InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+
+#define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+  PLIST_ENTRY current;\
+\
+  current = (ListHead)->Flink;\
+  while (current != (ListHead))\
+  {\
+    if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
+        (NewEntry)->SortField)\
+    {\
+      break;\
+    }\
+    current = current->Flink;\
+  }\
+\
+  InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+
+#define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+  PLIST_ENTRY current;\
+\
+  current = (ListHead)->Flink;\
+  while (current != (ListHead))\
+  {\
+    if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
+        (NewEntry)->SortField)\
+    {\
+      break;\
+    }\
+    current = current->Flink;\
+  }\
+\
+  InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+ULONG
+STDCALL
+DbgPrint(
+  IN PCH  Format,
+  IN ...);
+
+VOID
+STDCALL
+DbgBreakPoint(VOID);
+
+NTSTATUS
+STDCALL
+RtlAbsoluteToSelfRelativeSD (
+    IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
+    IN OUT PSECURITY_DESCRIPTOR_RELATIVE SelfRelativeSecurityDescriptor,
+    IN PULONG BufferLength
+);
+
+NTSTATUS
+STDCALL
+RtlAddAccessAllowedAce (
+    PACL Acl,
+    ULONG Revision,
+    ACCESS_MASK AccessMask,
+    PSID Sid
+);
+            
+PVOID
+STDCALL
+RtlAllocateHeap (
+    IN HANDLE  HeapHandle,
+    IN ULONG   Flags,
+    IN ULONG   Size
+);
+
+NTSTATUS
+STDCALL
+RtlAppendUnicodeToString (
+    PUNICODE_STRING Destination,
+    PCWSTR Source
+);
+
+NTSTATUS
+STDCALL
+RtlAppendUnicodeStringToString (
+    PUNICODE_STRING    Destination,
+    PUNICODE_STRING    Source
+);
+
+NTSTATUS
+STDCALL
+RtlAddAtomToAtomTable (
+    IN PRTL_ATOM_TABLE AtomTable,
+    IN PWSTR AtomName,
+    OUT PRTL_ATOM Atom
+);
+
+VOID
+STDCALL
+RtlCopyLuid(
+    IN PLUID LuidDest,
+    IN PLUID LuidSrc
+);
+
+VOID 
+STDCALL
+RtlCopyLuidAndAttributesArray(
+    ULONG Count,
+    PLUID_AND_ATTRIBUTES Src,
+    PLUID_AND_ATTRIBUTES Dest
+);
+        
+NTSTATUS 
+STDCALL
+RtlCopySidAndAttributesArray(
+    ULONG Count,
+    PSID_AND_ATTRIBUTES Src,
+    ULONG SidAreaSize,
+    PSID_AND_ATTRIBUTES Dest,
+    PVOID SidArea,
+    PVOID* RemainingSidArea,
+    PULONG RemainingSidAreaSize
+);
+
+SIZE_T 
+STDCALL
+RtlCompareMemory(IN const VOID *Source1,
+                 IN const VOID *Source2,
+                 IN SIZE_T Length);
+                 
+LONG
+STDCALL
+RtlCompareUnicodeString (
+    PUNICODE_STRING String1,
+    PUNICODE_STRING String2,
+    BOOLEAN CaseInsensitive
+);
+    
+BOOLEAN
+STDCALL
+RtlEqualUnicodeString (
+    PUNICODE_STRING String1,
+    PUNICODE_STRING String2,
+    BOOLEAN CaseInsensitive
+);
+                 
+VOID
+STDCALL
+RtlAcquirePebLock (
+       VOID
+       );
+
+VOID
+STDCALL
+RtlReleasePebLock (
+       VOID
+       );
+
+NTSTATUS
+STDCALL
+RtlCompressBuffer (
+    IN USHORT   CompressionFormatAndEngine,
+    IN PUCHAR   UncompressedBuffer,
+    IN ULONG    UncompressedBufferSize,
+    OUT PUCHAR  CompressedBuffer,
+    IN ULONG    CompressedBufferSize,
+    IN ULONG    UncompressedChunkSize,
+    OUT PULONG  FinalCompressedSize,
+    IN PVOID    WorkSpace
+);
+
+NTSTATUS
+STDCALL
+RtlConvertSidToUnicodeString (
+    OUT PUNICODE_STRING DestinationString,
+    IN PSID             Sid,
+    IN BOOLEAN          AllocateDestinationString
+);
+
+NTSTATUS
+STDCALL
+RtlCopySid (
+    IN ULONG   Length,
+    IN PSID    Destination,
+    IN PSID    Source
+);
+
+NTSTATUS
+STDCALL
+RtlCreateAcl(
+    PACL Acl,
+    ULONG AclSize,
+    ULONG AclRevision
+);
+          
+NTSTATUS
+STDCALL
+RtlCreateAtomTable(
+    IN ULONG TableSize,
+    IN OUT PRTL_ATOM_TABLE *AtomTable
+);
+
+NTSTATUS
+STDCALL
+RtlCreateUserThread (
+    IN HANDLE ProcessHandle,
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN BOOLEAN CreateSuspended,
+    IN LONG StackZeroBits,
+    IN OUT PULONG StackReserve,
+    IN OUT PULONG StackCommit,
+    IN PTHREAD_START_ROUTINE StartAddress,
+    IN PVOID Parameter,
+    IN OUT PHANDLE ThreadHandle,
+    IN OUT PCLIENT_ID ClientId
+);
+
+BOOLEAN
+STDCALL
+RtlCreateUnicodeString(
+    OUT PUNICODE_STRING DestinationString,
+    IN PCWSTR           SourceString
+);
+
+NTSTATUS
+STDCALL
+RtlDecompressBuffer (
+    IN USHORT   CompressionFormat,
+    OUT PUCHAR  UncompressedBuffer,
+    IN ULONG    UncompressedBufferSize,
+    IN PUCHAR   CompressedBuffer,
+    IN ULONG    CompressedBufferSize,
+    OUT PULONG  FinalUncompressedSize
+);
+
+NTSTATUS
+STDCALL
+RtlExpandEnvironmentStrings_U (
+    PWSTR Environment,
+    PUNICODE_STRING Source,
+    PUNICODE_STRING Destination,
+    PULONG Length
+);
+
+PRTL_USER_PROCESS_PARAMETERS
+STDCALL
+RtlDeNormalizeProcessParams (
+    IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+);
+
+PRTL_USER_PROCESS_PARAMETERS
+STDCALL
+RtlNormalizeProcessParams (
+    IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters
+);
+
+NTSTATUS
+STDCALL
+RtlDeleteAtomFromAtomTable (
+       IN PRTL_ATOM_TABLE AtomTable,
+       IN RTL_ATOM Atom
+);
+
+NTSTATUS
+STDCALL
+RtlDeleteCriticalSection (
+     PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSTATUS 
+STDCALL
+RtlDestroyAtomTable (
+       IN PRTL_ATOM_TABLE AtomTable
+);
+
+NTSTATUS
+STDCALL
+RtlEnterCriticalSection (
+     PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSTATUS 
+STDCALL
+RtlInitializeCriticalSection (
+     PRTL_CRITICAL_SECTION CriticalSection
+);
+
+NTSTATUS
+STDCALL
+RtlLeaveCriticalSection (
+     PRTL_CRITICAL_SECTION CriticalSection
+);
+
+VOID
+STDCALL
+RtlInitializeBitMap(
+  IN PRTL_BITMAP  BitMapHeader,
+  IN PULONG  BitMapBuffer,
+  IN ULONG  SizeOfBitMap); 
+  
+BOOLEAN
+STDCALL
+RtlAreBitsClear(
+  IN PRTL_BITMAP  BitMapHeader,
+  IN ULONG  StartingIndex,
+  IN ULONG  Length); 
+
+BOOLEAN
+STDCALL
+RtlAreBitsSet(
+  IN PRTL_BITMAP  BitMapHeader,
+  IN ULONG  StartingIndex,
+  IN ULONG  Length); 
+
+NTSTATUS
+STDCALL
+RtlMultiByteToUnicodeN (
+    PWCHAR UnicodeString,
+    ULONG  UnicodeSize,
+    PULONG ResultSize,
+    const PCHAR  MbString,
+    ULONG  MbSize
+);
+
+NTSTATUS
+STDCALL
+RtlMultiByteToUnicodeSize (
+    PULONG UnicodeSize,
+    PCHAR  MbString,
+    ULONG  MbSize
+);
+
+CHAR STDCALL
+RtlUpperChar (CHAR Source);
+
+WCHAR
+STDCALL
+RtlUpcaseUnicodeChar (
+       WCHAR Source
+       );
+    
+NTSTATUS
+STDCALL
+RtlAnsiStringToUnicodeString (
+       PUNICODE_STRING DestinationString,
+       PANSI_STRING    SourceString,
+       BOOLEAN         AllocateDestinationString
+       );
+    
+NTSTATUS
+STDCALL
+RtlUnicodeToMultiByteN (
+       PCHAR   MbString,
+       ULONG   MbSize,
+       PULONG  ResultSize,
+       PWCHAR  UnicodeString,
+       ULONG   UnicodeSize
+       );
+    
+ULONG
+STDCALL
+RtlOemStringToUnicodeSize (
+       POEM_STRING     AnsiString
+       );
+    
+WCHAR STDCALL
+RtlDowncaseUnicodeChar(IN WCHAR Source);
+
+NTSTATUS
+STDCALL
+RtlUpcaseUnicodeToMultiByteN (
+       PCHAR   MbString,
+       ULONG   MbSize,
+       PULONG  ResultSize,
+       PWCHAR  UnicodeString,
+       ULONG   UnicodeSize
+       );
+    
+NTSTATUS
+STDCALL
+RtlUnicodeToMultiByteSize (
+       PULONG  MbSize,
+       PWCHAR  UnicodeString,
+       ULONG   UnicodeSize
+       );
+    
+NTSTATUS
+STDCALL
+RtlOemToUnicodeN(
+       PWSTR UnicodeString,
+       ULONG MaxBytesInUnicodeString,
+       PULONG BytesInUnicodeString,
+       IN PCHAR OemString,
+       ULONG BytesInOemString
+       );
+    
+NTSTATUS
+STDCALL
+RtlUnicodeToOemN (
+       PCHAR   OemString,
+       ULONG   OemSize,
+       PULONG  ResultSize,
+       PWCHAR  UnicodeString,
+       ULONG   UnicodeSize
+       );
+
+NTSTATUS
+STDCALL
+RtlUpcaseUnicodeStringToOemString (
+       IN OUT  POEM_STRING     DestinationString,
+       IN      PUNICODE_STRING SourceString,
+       IN      BOOLEAN         AllocateDestinationString
+       );
+        
+ULONG
+STDCALL
+RtlUnicodeStringToAnsiSize (
+       IN      PUNICODE_STRING UnicodeString
+       );
+    
+#ifndef _NTIFS_
+BOOLEAN
+STDCALL
+RtlEqualSid (
+    IN PSID Sid1,
+    IN PSID Sid2
+);
+
+VOID
+STDCALL
+RtlFillMemoryUlong (
+    IN PVOID    Destination,
+    IN ULONG    Length,
+    IN ULONG    Fill
+);
+
+#endif
+
+NTSTATUS
+STDCALL
+RtlFindMessage (
+       IN      PVOID                           BaseAddress,
+       IN      ULONG                           Type,
+       IN      ULONG                           Language,
+       IN      ULONG                           MessageId,
+       OUT     PRTL_MESSAGE_RESOURCE_ENTRY     *MessageResourceEntry
+       );
+       
+BOOLEAN
+STDCALL
+RtlFreeHeap (
+    IN HANDLE  HeapHandle,
+    IN ULONG   Flags,
+    IN PVOID   P
+);
+
+VOID
+STDCALL
+RtlFreeUnicodeString(
+  IN PUNICODE_STRING  UnicodeString);
+
+VOID 
+STDCALL
+RtlFreeOemString(
+    IN POEM_STRING OemString
+);
+
+NTSTATUS
+STDCALL
+RtlGetCompressionWorkSpaceSize (
+    IN USHORT   CompressionFormatAndEngine,
+    OUT PULONG  CompressBufferWorkSpaceSize,
+    OUT PULONG  CompressFragmentWorkSpaceSize
+);
+
+NTSTATUS
+STDCALL
+RtlGetDaclSecurityDescriptor (
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    OUT PBOOLEAN            DaclPresent,
+    OUT PACL                *Dacl,
+    OUT PBOOLEAN            DaclDefaulted
+);
+
+NTSTATUS
+STDCALL
+RtlGetGroupSecurityDescriptor (
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    OUT PSID                *Group,
+    OUT PBOOLEAN            GroupDefaulted
+);
+
+NTSTATUS
+STDCALL
+RtlGetOwnerSecurityDescriptor (
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    OUT PSID                *Owner,
+    OUT PBOOLEAN            OwnerDefaulted
+);
+
+ULONG
+STDCALL
+RtlImageRvaToVa (
+    PIMAGE_NT_HEADERS NtHeader,
+    PVOID BaseAddress,
+    ULONG Rva,
+    PIMAGE_SECTION_HEADER *SectionHeader
+);
+
+PIMAGE_NT_HEADERS
+STDCALL
+RtlImageNtHeader (
+    IN PVOID BaseAddress
+);
+
+PIMAGE_SECTION_HEADER
+STDCALL
+RtlImageRvaToSection (
+    PIMAGE_NT_HEADERS NtHeader,
+    PVOID BaseAddress,
+    ULONG Rva
+);
+    
+NTSTATUS
+STDCALL
+RtlInitializeSid (
+    IN OUT PSID                     Sid,
+    IN PSID_IDENTIFIER_AUTHORITY    IdentifierAuthority,
+    IN UCHAR                        SubAuthorityCount
+);
+
+VOID
+STDCALL
+RtlInitNlsTables (
+    IN  PUSHORT AnsiTableBase,
+    IN  PUSHORT OemTableBase,
+    IN  PUSHORT CaseTableBase,
+    OUT PNLSTABLEINFO NlsTable
+);
+    
+NTSTATUS
+STDCALL
+RtlGetSaclSecurityDescriptor (
+    PSECURITY_DESCRIPTOR SecurityDescriptor,
+    PBOOLEAN SaclPresent,
+    PACL* Sacl,
+    PBOOLEAN SaclDefaulted
+);
+
+NTSTATUS
+STDCALL
+RtlQueryAtomInAtomTable (
+    IN PRTL_ATOM_TABLE AtomTable,
+    IN RTL_ATOM Atom,
+    IN OUT PULONG RefCount OPTIONAL,
+    IN OUT PULONG PinCount OPTIONAL,
+    IN OUT PWSTR AtomName OPTIONAL,
+    IN OUT PULONG NameLength OPTIONAL
+);
+    
+NTSTATUS
+STDCALL
+RtlLookupAtomInAtomTable (
+    IN PRTL_ATOM_TABLE AtomTable,
+    IN PWSTR AtomName,
+    OUT PRTL_ATOM Atom
+);
+
+VOID
+STDCALL
+RtlResetRtlTranslations (
+    IN PNLSTABLEINFO NlsTable
+);
+                          
+VOID
+STDCALL
+RtlRaiseException (
+  IN PEXCEPTION_RECORD ExceptionRecord
+);
+
+VOID
+STDCALL
+RtlInitUnicodeString(
+  IN OUT PUNICODE_STRING  DestinationString,
+  IN PCWSTR  SourceString);
+
+
+BOOLEAN
+STDCALL
+RtlIsNameLegalDOS8Dot3 (
+    IN PUNICODE_STRING UnicodeName,
+    IN PANSI_STRING    AnsiName,
+    PBOOLEAN           Unknown
+);
+
+ULONG
+STDCALL
+RtlLengthRequiredSid (
+    IN UCHAR SubAuthorityCount
+);
+
+ULONG
+STDCALL
+RtlLengthSid (
+    IN PSID Sid
+);
+
+ULONG
+STDCALL
+RtlNtStatusToDosError (
+    IN NTSTATUS Status
+);
+
+NTSTATUS STDCALL
+RtlFormatCurrentUserKeyPath (IN OUT PUNICODE_STRING KeyPath);
+
+NTSTATUS
+STDCALL
+RtlQueryEnvironmentVariable_U (
+       PWSTR           Environment,
+       PUNICODE_STRING Name,
+       PUNICODE_STRING Value
+       );
+
+NTSTATUS
+STDCALL
+RtlQueryTimeZoneInformation (
+       IN OUT PTIME_ZONE_INFORMATION TimeZoneInformation
+);
+
+VOID STDCALL RtlRaiseStatus(NTSTATUS Status);
+       
+VOID
+STDCALL
+RtlSecondsSince1970ToTime (
+    IN ULONG            SecondsSince1970,
+    OUT PLARGE_INTEGER  Time
+);
+
+VOID
+STDCALL
+RtlSetBits (
+    PRTL_BITMAP BitMapHeader,
+    ULONG StartingIndex,
+    ULONG NumberToSet
+);
+    
+#if (VER_PRODUCTBUILD >= 2195)
+
+NTSTATUS
+STDCALL
+RtlSelfRelativeToAbsoluteSD (
+    IN PSECURITY_DESCRIPTOR     SelfRelativeSD,
+    OUT PSECURITY_DESCRIPTOR    AbsoluteSD,
+    IN PULONG                   AbsoluteSDSize,
+    IN PACL                     Dacl,
+    IN PULONG                   DaclSize,
+    IN PACL                     Sacl,
+    IN PULONG                   SaclSize,
+    IN PSID                     Owner,
+    IN PULONG                   OwnerSize,
+    IN PSID                     PrimaryGroup,
+    IN PULONG                   PrimaryGroupSize
+);
+
+#endif /* (VER_PRODUCTBUILD >= 2195) */
+
+NTSTATUS
+STDCALL
+RtlSetGroupSecurityDescriptor (
+    IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN PSID                     Group,
+    IN BOOLEAN                  GroupDefaulted
+);
+
+NTSTATUS
+STDCALL
+RtlSetOwnerSecurityDescriptor (
+    IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN PSID                     Owner,
+    IN BOOLEAN                  OwnerDefaulted
+);
+
+NTSTATUS
+STDCALL
+RtlSetSaclSecurityDescriptor (
+    IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN BOOLEAN                  SaclPresent,
+    IN PACL                     Sacl,
+    IN BOOLEAN                  SaclDefaulted
+);
+
+PUCHAR
+STDCALL
+RtlSubAuthorityCountSid (
+    IN PSID Sid
+);
+
+PULONG
+STDCALL
+RtlSubAuthoritySid (
+    IN PSID    Sid,
+    IN ULONG   SubAuthority
+);
+
+NTSTATUS
+STDCALL
+RtlUpcaseUnicodeStringToCountedOemString (
+       IN OUT  POEM_STRING     DestinationString,
+       IN      PUNICODE_STRING SourceString,
+       IN      BOOLEAN         AllocateDestinationString
+       );
+
+NTSTATUS
+STDCALL
+RtlUnicodeStringToOemString (
+       IN OUT  POEM_STRING     DestinationString,
+       IN      PUNICODE_STRING SourceString,
+       IN      BOOLEAN         AllocateDestinationString
+       );
+       
+NTSTATUS
+STDCALL
+RtlUpcaseUnicodeToOemN (
+       PCHAR   OemString,
+       ULONG   OemSize,
+       PULONG  ResultSize,
+       PWCHAR  UnicodeString,
+       ULONG   UnicodeSize
+       );
+       
+       
+NTSTATUS STDCALL
+RtlLargeIntegerToChar (
+       IN      PLARGE_INTEGER  Value,
+       IN      ULONG           Base,
+       IN      ULONG           Length,
+       IN OUT  PCHAR           String
+       );
+       
+BOOLEAN 
+STDCALL
+RtlCreateUnicodeStringFromAsciiz (OUT PUNICODE_STRING Destination,
+                                 IN PCSZ Source);
+       
+                  
+BOOLEAN 
+STDCALL
+RtlTimeFieldsToTime (
+    PTIME_FIELDS TimeFields,
+    PLARGE_INTEGER Time
+);
+
+VOID
+STDCALL
+RtlTimeToTimeFields (
+    PLARGE_INTEGER Time,
+    PTIME_FIELDS TimeFields
+);
+
+NTSTATUS
+STDCALL
+RtlQueryRegistryValues (
+    IN ULONG RelativeTo,
+    IN PCWSTR Path,
+    IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
+    IN PVOID Context,
+    IN PVOID Environment
+);
+
+NTSTATUS
+STDCALL
+RtlWriteRegistryValue (
+    ULONG RelativeTo,
+    PCWSTR Path,
+    PCWSTR ValueName,
+    ULONG ValueType,
+    PVOID ValueData,
+    ULONG ValueLength
+);
+             
+VOID
+STDCALL
+RtlUnwind (
+  PEXCEPTION_REGISTRATION RegistrationFrame,
+  PVOID ReturnAddress,
+  PEXCEPTION_RECORD ExceptionRecord,
+  DWORD EaxValue
+);
+       
+BOOLEAN
+STDCALL
+RtlValidSid (
+    IN PSID Sid
+);
+
+BOOLEAN 
+STDCALL
+RtlValidAcl (
+    PACL Acl
+);
+
+/*  functions exported from NTOSKRNL.EXE which are considered RTL  */
+char *_itoa (int value, char *string, int radix);
+wchar_t *_itow (int value, wchar_t *string, int radix);
+int _snprintf(char * buf, size_t cnt, const char *fmt, ...);
+int _snwprintf(wchar_t *buf, size_t cnt, const wchar_t *fmt, ...);
+int _stricmp(const char *s1, const char *s2);
+char * _strlwr(char *x);
+int _strnicmp(const char *s1, const char *s2, size_t n);
+char * _strnset(char* szToFill, int szFill, size_t sizeMaxFill);
+char * _strrev(char *s);
+char * _strset(char* szToFill, int szFill);
+char * _strupr(char *x);
+int _vsnprintf(char *buf, size_t cnt, const char *fmt, va_list args);
+int _wcsicmp (const wchar_t* cs, const wchar_t* ct);
+wchar_t * _wcslwr (wchar_t *x);
+int _wcsnicmp (const wchar_t * cs,const wchar_t * ct,size_t count);
+wchar_t* _wcsnset (wchar_t* wsToFill, wchar_t wcFill, size_t sizeMaxFill);
+wchar_t * _wcsrev(wchar_t *s);
+wchar_t *_wcsupr(wchar_t *x);
+
+int atoi(const char *str);
+long atol(const char *str);
+int isdigit(int c);
+int islower(int c);
+int isprint(int c);
+int isspace(int c);
+int isupper(int c);
+int isxdigit(int c);
+size_t mbstowcs (wchar_t *wcstr, const char *mbstr, size_t count);
+int mbtowc (wchar_t *wchar, const char *mbchar, size_t count);
+void * memchr(const void *s, int c, size_t n);
+void * memcpy(void *to, const void *from, size_t count);
+void * memmove(void *dest,const void *src, size_t count);
+void * memset(void *src, int val, size_t count);
+
+int rand(void);
+int sprintf(char * buf, const char *fmt, ...);
+void srand(unsigned seed);
+char * strcat(char *s, const char *append);
+char * strchr(const char *s, int c);
+int strcmp(const char *s1, const char *s2);
+char * strcpy(char *to, const char *from);
+size_t strlen(const char *str);
+char * strncat(char *dst, const char *src, size_t n);
+int strncmp(const char *s1, const char *s2, size_t n);
+char *strncpy(char *dst, const char *src, size_t n);
+char *strrchr(const char *s, int c);
+size_t strspn(const char *s1, const char *s2);
+char *strstr(const char *s, const char *find);
+int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
+int tolower(int c);
+int toupper(int c);
+wchar_t towlower(wchar_t c);
+wchar_t towupper(wchar_t c);
+int vsprintf(char *buf, const char *fmt, va_list args);
+wchar_t * wcscat(wchar_t *dest, const wchar_t *src);
+wchar_t * wcschr(const wchar_t *str, wchar_t ch);
+int wcscmp(const wchar_t *cs, const wchar_t *ct);
+wchar_t* wcscpy(wchar_t* str1, const wchar_t* str2);
+size_t wcscspn(const wchar_t *str,const wchar_t *reject);
+size_t wcslen(const wchar_t *s);
+wchar_t * wcsncat(wchar_t *dest, const wchar_t *src, size_t count);
+int wcsncmp(const wchar_t *cs, const wchar_t *ct, size_t count);
+wchar_t * wcsncpy(wchar_t *dest, const wchar_t *src, size_t count);
+wchar_t * wcsrchr(const wchar_t *str, wchar_t ch);
+size_t wcsspn(const wchar_t *str,const wchar_t *accept);
+wchar_t *wcsstr(const wchar_t *s,const wchar_t *b);
+size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count);
+int wctomb (char *mbchar, wchar_t wchar);
+
+#endif
diff --git a/reactos/include/ndk/rtltypes.h b/reactos/include/ndk/rtltypes.h
new file mode 100644 (file)
index 0000000..624279b
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/rtltypes.h
+ * PURPOSE:         Defintions for Runtime Library Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _RTLTYPES_H
+#define _RTLTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+#include "zwtypes.h"
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+#define MAXIMUM_LEADBYTES 12
+
+#define PPF_NORMALIZED (1)
+
+#define PEB_BASE        (0x7FFDF000)
+
+#define EXCEPTION_UNWINDING 0x02
+#define EXCEPTION_EXIT_UNWIND 0x04
+#define EXCEPTION_STACK_INVALID 0x8
+#define EXCEPTION_NESTED_CALL 0x10
+#define EXCEPTION_TARGET_UNWIND 0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x20
+
+#define  EH_NONCONTINUABLE   0x01
+#define  EH_UNWINDING        0x02
+#define  EH_EXIT_UNWIND      0x04
+#define  EH_STACK_INVALID    0x08
+#define  EH_NESTED_CALL      0x10
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum 
+{
+    ExceptionContinueExecution,
+    ExceptionContinueSearch,
+    ExceptionNestedException,
+    ExceptionCollidedUnwind
+} EXCEPTION_DISPOSITION;
+
+/* TYPES *********************************************************************/
+
+typedef unsigned short RTL_ATOM;
+typedef unsigned short *PRTL_ATOM;
+
+typedef struct _ACE
+{
+    ACE_HEADER Header;
+    ACCESS_MASK AccessMask;
+} ACE, *PACE;
+
+typedef struct _EXCEPTION_REGISTRATION 
+{
+    struct _EXCEPTION_REGISTRATION*    prev;
+    PEXCEPTION_HANDLER        handler;
+} EXCEPTION_REGISTRATION, *PEXCEPTION_REGISTRATION;
+
+typedef EXCEPTION_REGISTRATION EXCEPTION_REGISTRATION_RECORD;
+typedef PEXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION_RECORD;
+
+typedef struct RTL_DRIVE_LETTER_CURDIR 
+{
+    USHORT Flags;
+    USHORT Length;
+    ULONG TimeStamp;
+    UNICODE_STRING DosPath;
+} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
+     
+typedef struct _RTL_HEAP_DEFINITION 
+{
+    ULONG Length;
+    ULONG Unknown[11];
+} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
+
+typedef struct _RTL_MESSAGE_RESOURCE_ENTRY 
+{
+    USHORT Length;
+    USHORT Flags;
+    UCHAR Text[1];
+} RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
+
+typedef struct _RTL_MESSAGE_RESOURCE_BLOCK 
+{
+    ULONG LowId;
+    ULONG HighId;
+    ULONG OffsetToEntries;
+} RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
+
+typedef struct _RTL_MESSAGE_RESOURCE_DATA 
+{
+    ULONG NumberOfBlocks;
+    RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
+} RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
+
+typedef struct _NLS_FILE_HEADER 
+{
+    USHORT  HeaderSize;
+    USHORT  CodePage;
+    USHORT  MaximumCharacterSize;  /* SBCS = 1, DBCS = 2 */
+    USHORT  DefaultChar;
+    USHORT  UniDefaultChar;
+    USHORT  TransDefaultChar;
+    USHORT  TransUniDefaultChar;
+    USHORT  DBCSCodePage;
+    UCHAR   LeadByte[MAXIMUM_LEADBYTES];
+} NLS_FILE_HEADER, *PNLS_FILE_HEADER;
+
+typedef struct _RTL_USER_PROCESS_PARAMETERS 
+{
+    ULONG  AllocationSize;
+    ULONG  Size;
+    ULONG  Flags;
+    ULONG  DebugFlags;
+    HANDLE  hConsole;
+    ULONG  ProcessGroup;
+    HANDLE  hStdInput;
+    HANDLE  hStdOutput;
+    HANDLE  hStdError;
+    UNICODE_STRING  CurrentDirectoryName;
+    HANDLE  CurrentDirectoryHandle;
+    UNICODE_STRING  DllPath;
+    UNICODE_STRING  ImagePathName;
+    UNICODE_STRING  CommandLine;
+    PWSTR  Environment;
+    ULONG  dwX;
+    ULONG  dwY;
+    ULONG  dwXSize;
+    ULONG  dwYSize;
+    ULONG  dwXCountChars;
+    ULONG  dwYCountChars;
+    ULONG  dwFillAttribute;
+    ULONG  dwFlags;
+    ULONG  wShowWindow;
+    UNICODE_STRING  WindowTitle;
+    UNICODE_STRING  DesktopInfo;
+    UNICODE_STRING  ShellInfo;
+    UNICODE_STRING  RuntimeInfo;
+} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
+        
+typedef struct _RTL_PROCESS_INFO
+{
+   ULONG Size;
+   HANDLE ProcessHandle;
+   HANDLE ThreadHandle;
+   CLIENT_ID ClientId;
+   SECTION_IMAGE_INFORMATION ImageInfo;
+} RTL_PROCESS_INFO, *PRTL_PROCESS_INFO;
+       
+typedef struct _RTL_BITMAP 
+{
+    ULONG SizeOfBitMap;
+    PULONG Buffer;
+} RTL_BITMAP;
+typedef RTL_BITMAP *PRTL_BITMAP;
+
+typedef struct _RTL_BITMAP_RUN
+{
+    ULONG StartingIndex;
+    ULONG NumberOfBits;
+} RTL_BITMAP_RUN;
+typedef RTL_BITMAP_RUN *PRTL_BITMAP_RUN;
+
+/* FIXME: This is a Windows Type which which we are not implementing properly
+      The type below however is our own implementation. We will eventually use Windows' */
+typedef struct _RTL_ATOM_TABLE 
+{
+    ULONG TableSize;
+    ULONG NumberOfAtoms;
+    PVOID Lock;        /* fast mutex (kernel mode)/ critical section (user mode) */
+    PVOID HandleTable;
+    LIST_ENTRY Slot[0];
+} RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
+
+/* Let Kernel Drivers use this */
+#ifndef _WINBASE_H
+    typedef struct _SYSTEMTIME 
+    {
+        WORD wYear;
+        WORD wMonth;
+        WORD wDayOfWeek;
+        WORD wDay;
+        WORD wHour;
+        WORD wMinute;
+        WORD wSecond;
+        WORD wMilliseconds;
+    } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
+
+    typedef struct _TIME_ZONE_INFORMATION 
+    {
+        LONG Bias;
+        WCHAR StandardName[32];
+        SYSTEMTIME StandardDate;
+        LONG StandardBias;
+        WCHAR DaylightName[32];
+        SYSTEMTIME DaylightDate;
+        LONG DaylightBias;
+    } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
+#endif
+
+typedef LPTIME_ZONE_INFORMATION PTIME_ZONE_INFORMATION;
+
+#endif
diff --git a/reactos/include/ndk/sefuncs.h b/reactos/include/ndk/sefuncs.h
new file mode 100644 (file)
index 0000000..1fa3bc9
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/sefuncs.h
+ * PURPOSE:         Defintions for Security Subsystem Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _SEFUNCS_H
+#define _SEFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+SECURITY_IMPERSONATION_LEVEL
+STDCALL
+SeTokenImpersonationLevel(
+    IN PACCESS_TOKEN Token
+);
+
+#endif
diff --git a/reactos/include/ndk/setypes.h b/reactos/include/ndk/setypes.h
new file mode 100644 (file)
index 0000000..0efaaa5
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/setypes.h
+ * PURPOSE:         Defintions for Security Subsystem Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _SETYPES_H
+#define _SETYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+/* TYPES *********************************************************************/
+
+typedef struct _SEP_AUDIT_POLICY_CATEGORIES 
+{
+    UCHAR System:4;
+    UCHAR Logon:4;
+    UCHAR ObjectAccess:4;
+    UCHAR PrivilegeUse:4;
+    UCHAR DetailedTracking:4;
+    UCHAR PolicyChange:4;
+    UCHAR AccountManagement:4;
+    UCHAR DirectoryServiceAccess:4;
+    UCHAR AccountLogon:4;
+} SEP_AUDIT_POLICY_CATEGORIES, *PSEP_AUDIT_POLICY_CATEGORIES;
+
+typedef struct _SEP_AUDIT_POLICY_OVERLAY 
+{
+    ULONGLONG PolicyBits:36;
+    UCHAR SetBit:1;
+} SEP_AUDIT_POLICY_OVERLAY, *PSEP_AUDIT_POLICY_OVERLAY;
+
+typedef struct _SEP_AUDIT_POLICY 
+{
+    union 
+    {
+        SEP_AUDIT_POLICY_CATEGORIES PolicyElements;
+        SEP_AUDIT_POLICY_OVERLAY PolicyOverlay;
+        ULONGLONG Overlay;
+    };
+} SEP_AUDIT_POLICY, *PSEP_AUDIT_POLICY;
+typedef struct _TOKEN 
+{
+  TOKEN_SOURCE        TokenSource;               /* 0x00 */
+  LUID                TokenId;                   /* 0x10 */
+  LUID                AuthenticationId;          /* 0x18 */
+  LUID              ParentTokenId;             /* 0x20 */
+  LARGE_INTEGER        ExpirationTime;            /* 0x28 */
+  struct _ERESOURCE *TokenLock;                /* 0x30 */
+  ULONG             Padding;                   /* 0x34 */
+  SEP_AUDIT_POLICY  AuditPolicy;               /* 0x38 */
+  LUID                ModifiedId;                /* 0x40 */
+  ULONG             SessionId;                 /* 0x48 */
+  ULONG                UserAndGroupCount;         /* 0x4C */
+  ULONG             RestrictedSidCount;        /* 0x50 */
+  ULONG                PrivilegeCount;            /* 0x54 */
+  ULONG                VariableLength;            /* 0x58 */
+  ULONG                DynamicCharged;            /* 0x5C */
+  ULONG                DynamicAvailable;          /* 0x60 */
+  ULONG                DefaultOwnerIndex;         /* 0x64 */
+  PSID_AND_ATTRIBUTES UserAndGroups;           /* 0x68 */
+  PSID_AND_ATTRIBUTES RestrictedSids;          /* 0x6C */
+  PSID                PrimaryGroup;              /* 0x70 */
+  PLUID_AND_ATTRIBUTES Privileges;             /* 0x74 */
+  PULONG            DynamicPart;               /* 0x78 */
+  PACL                DefaultDacl;               /* 0x7C */
+  TOKEN_TYPE        TokenType;                 /* 0x80 */
+  SECURITY_IMPERSONATION_LEVEL    ImpersonationLevel;  /* 0x84 */
+  ULONG                TokenFlags;                /* 0x88 */
+  ULONG                TokenInUse;                /* 0x8C */
+  PVOID                ProxyData;                 /* 0x90 */
+  PVOID                AuditData;                 /* 0x94 */
+  LUID              OriginatingLogonSession;   /* 0x98 */
+  UCHAR                VariablePart[1];           /* 0xA0 */
+} TOKEN, *PTOKEN;
+
+#endif
diff --git a/reactos/include/ndk/umtypes.h b/reactos/include/ndk/umtypes.h
new file mode 100644 (file)
index 0000000..944e176
--- /dev/null
@@ -0,0 +1,1116 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/umtypes.h
+ * PURPOSE:         Definitions needed for Native Headers if target is not Kernel-Mode.
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+
+#ifndef _UMTYPES_H
+#define _UMTYPES_H
+
+/*FIXME: REORGANIZE!!!*/
+
+#define NTAPI __stdcall
+#define OBJ_INHERIT 2L
+#define OBJ_PERMANENT 16L
+#define OBJ_EXCLUSIVE 32L
+#define OBJ_CASE_INSENSITIVE 64L
+#define OBJ_OPENIF 128L
+#define OBJ_OPENLINK 256L
+#define OBJ_VALID_ATTRIBUTES 498L
+#define InitializeObjectAttributes(p,n,a,r,s) { \
+  (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
+  (p)->RootDirectory = (r); \
+  (p)->Attributes = (a); \
+  (p)->ObjectName = (n); \
+  (p)->SecurityDescriptor = (s); \
+  (p)->SecurityQualityOfService = NULL; \
+}
+#ifndef NT_SUCCESS
+#define NT_SUCCESS(x) ((x)>=0)
+#define STATUS_SUCCESS ((NTSTATUS)0)
+#endif
+#define NT_WARNING(x) ((ULONG)(x)>>30==2)
+#define NT_ERROR(x) ((ULONG)(x)>>30==3)
+#define PAGE_SIZE                         0x1000
+#define PAGE_SHIFT                        12L
+#define SharedUserData                    ((KUSER_SHARED_DATA * CONST) KI_USER_SHARED_DATA)
+#include <ddk/ntstatus.h>
+typedef struct _OBJECT_TYPE *POBJECT_TYPE;
+
+#ifdef DBG
+
+#define ASSERT(exp) \
+  ((!(exp)) ? \
+    (RtlAssert( #exp, __FILE__, __LINE__, NULL ), FALSE) : TRUE)
+
+#define ASSERTMSG(msg, exp) \
+  ((!(exp)) ? \
+    (RtlAssert( #exp, __FILE__, __LINE__, msg ), FALSE) : TRUE)
+
+#define RTL_SOFT_ASSERT(exp) \
+  ((!(_exp)) ? \
+    (DbgPrint("%s(%d): Soft assertion failed\n   Expression: %s\n", __FILE__, __LINE__, #exp), FALSE) : TRUE)
+
+#define RTL_SOFT_ASSERTMSG(msg, exp) \
+  ((!(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)
+
+#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)
+
+#endif /* DBG */
+
+#define FILE_ANY_ACCESS   0
+#define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS
+#define FILE_READ_ACCESS  1
+#define FILE_WRITE_ACCESS 2
+
+#define METHOD_BUFFERED                   0
+#define METHOD_IN_DIRECT                  1
+#define METHOD_OUT_DIRECT                 2
+#define METHOD_NEITHER                    3
+
+#define DEVICE_TYPE ULONG
+
+#define FILE_DEVICE_BEEP                  0x00000001
+#define FILE_DEVICE_CD_ROM                0x00000002
+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM    0x00000003
+#define FILE_DEVICE_CONTROLLER            0x00000004
+#define FILE_DEVICE_DATALINK              0x00000005
+#define FILE_DEVICE_DFS                   0x00000006
+#define FILE_DEVICE_DISK                  0x00000007
+#define FILE_DEVICE_DISK_FILE_SYSTEM      0x00000008
+#define FILE_DEVICE_FILE_SYSTEM           0x00000009
+#define FILE_DEVICE_INPORT_PORT           0x0000000a
+#define FILE_DEVICE_KEYBOARD              0x0000000b
+#define FILE_DEVICE_MAILSLOT              0x0000000c
+#define FILE_DEVICE_MIDI_IN               0x0000000d
+#define FILE_DEVICE_MIDI_OUT              0x0000000e
+#define FILE_DEVICE_MOUSE                 0x0000000f
+#define FILE_DEVICE_MULTI_UNC_PROVIDER    0x00000010
+#define FILE_DEVICE_NAMED_PIPE            0x00000011
+#define FILE_DEVICE_NETWORK               0x00000012
+#define FILE_DEVICE_NETWORK_BROWSER       0x00000013
+#define FILE_DEVICE_NETWORK_FILE_SYSTEM   0x00000014
+#define FILE_DEVICE_NULL                  0x00000015
+#define FILE_DEVICE_PARALLEL_PORT         0x00000016
+#define FILE_DEVICE_PHYSICAL_NETCARD      0x00000017
+#define FILE_DEVICE_PRINTER               0x00000018
+#define FILE_DEVICE_SCANNER               0x00000019
+#define FILE_DEVICE_SERIAL_MOUSE_PORT     0x0000001a
+#define FILE_DEVICE_SERIAL_PORT           0x0000001b
+#define FILE_DEVICE_SCREEN                0x0000001c
+#define FILE_DEVICE_SOUND                 0x0000001d
+#define FILE_DEVICE_STREAMS               0x0000001e
+#define FILE_DEVICE_TAPE                  0x0000001f
+#define FILE_DEVICE_TAPE_FILE_SYSTEM      0x00000020
+#define FILE_DEVICE_TRANSPORT             0x00000021
+#define FILE_DEVICE_UNKNOWN               0x00000022
+#define FILE_DEVICE_VIDEO                 0x00000023
+#define FILE_DEVICE_VIRTUAL_DISK          0x00000024
+#define FILE_DEVICE_WAVE_IN               0x00000025
+#define FILE_DEVICE_WAVE_OUT              0x00000026
+#define FILE_DEVICE_8042_PORT             0x00000027
+#define FILE_DEVICE_NETWORK_REDIRECTOR    0x00000028
+#define FILE_DEVICE_BATTERY               0x00000029
+#define FILE_DEVICE_BUS_EXTENDER          0x0000002a
+#define FILE_DEVICE_MODEM                 0x0000002b
+#define FILE_DEVICE_VDM                   0x0000002c
+#define FILE_DEVICE_MASS_STORAGE          0x0000002d
+#define FILE_DEVICE_SMB                   0x0000002e
+#define FILE_DEVICE_KS                    0x0000002f
+#define FILE_DEVICE_CHANGER               0x00000030
+#define FILE_DEVICE_SMARTCARD             0x00000031
+#define FILE_DEVICE_ACPI                  0x00000032
+#define FILE_DEVICE_DVD                   0x00000033
+#define FILE_DEVICE_FULLSCREEN_VIDEO      0x00000034
+#define FILE_DEVICE_DFS_FILE_SYSTEM       0x00000035
+#define FILE_DEVICE_DFS_VOLUME            0x00000036
+#define FILE_DEVICE_SERENUM               0x00000037
+#define FILE_DEVICE_TERMSRV               0x00000038
+#define FILE_DEVICE_KSEC                  0x00000039
+#define FILE_DEVICE_FIPS                             0x0000003a
+#define CTL_CODE(DeviceType, Function, Method, Access)( \
+  ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
+#define FSCTL_REQUEST_OPLOCK_LEVEL_1    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_OPLOCK_LEVEL_2    CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_BATCH_OPLOCK      CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE  CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  3, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_NOTIFY       CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_LOCK_VOLUME               CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_UNLOCK_VOLUME             CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DISMOUNT_VOLUME           CTL_CODE(FILE_DEVICE_FILE_SYSTEM,  8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_IS_VOLUME_MOUNTED         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_PATHNAME_VALID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MARK_VOLUME_DIRTY         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_QUERY_RETRIEVAL_POINTERS  CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_GET_COMPRESSION           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_COMPRESSION           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+
+
+#define FSCTL_MARK_AS_SYSTEM_HIVE       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_OPLOCK_BREAK_ACK_NO_2     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_INVALIDATE_VOLUMES        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_FAT_BPB             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_REQUEST_FILTER_OPLOCK     CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_VOLUME_DATA      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_NTFS_FILE_RECORD      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_VOLUME_BITMAP         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_GET_RETRIEVAL_POINTERS    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_MOVE_FILE                 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_IS_VOLUME_DIRTY           CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_GET_HFS_INFORMATION       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_ALLOW_EXTENDED_DASD_IO    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER,  FILE_ANY_ACCESS)
+#define FSCTL_READ_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_WRITE_PROPERTY_DATA       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_FIND_FILES_BY_SID         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_DUMP_PROPERTY_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_SET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_GET_OBJECT_ID             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_OBJECT_ID          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_SET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_GET_REPARSE_POINT         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_REPARSE_POINT      CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_ENUM_USN_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_SECURITY_ID_CHECK         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_READ_USN_JOURNAL          CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_SET_OBJECT_ID_EXTENDED    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_CREATE_OR_GET_OBJECT_ID   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SET_SPARSE                CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_SET_ZERO_DATA             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_QUERY_ALLOCATED_RANGES    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_ENABLE_UPGRADE            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_SET_ENCRYPTION            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_ENCRYPTION_FSCTL_IO       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_WRITE_RAW_ENCRYPTED       CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_READ_RAW_ENCRYPTED        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56,  METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_CREATE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_READ_FILE_USN_DATA        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_WRITE_USN_CLOSE_RECORD    CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59,  METHOD_NEITHER, FILE_READ_DATA)
+#define FSCTL_EXTEND_VOLUME             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_QUERY_USN_JOURNAL         CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_DELETE_USN_JOURNAL        CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_MARK_HANDLE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SIS_COPYFILE              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_SIS_LINK_FILES            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_HSM_MSG                   CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_NSS_CONTROL               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_HSM_DATA                  CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_RECALL_FILE               CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_NSS_RCONTROL              CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_READ_FROM_PLEX            CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
+#define FSCTL_FILE_PREFETCH             CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
+
+
+#define FSCTL_MAILSLOT_PEEK             CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
+
+#define FSCTL_NETWORK_SET_CONFIGURATION_INFO    CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_CONFIGURATION_INFO    CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_CONNECTION_INFO       CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_ENUMERATE_CONNECTIONS     CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_DELETE_CONNECTION         CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_GET_STATISTICS            CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_SET_DOMAIN_NAME           CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT     CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+#define FSCTL_PIPE_ASSIGN_EVENT         CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_DISCONNECT           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_LISTEN               CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_PEEK                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_QUERY_EVENT          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_TRANSCEIVE           CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER,  FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_WAIT                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_IMPERSONATE          CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_SET_CLIENT_PROCESS   CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSCTL_PIPE_INTERNAL_READ        CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
+#define FSCTL_PIPE_INTERNAL_WRITE       CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_TRANSCEIVE  CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
+#define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+
+#define IOCTL_REDIR_QUERY_PATH          CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
+
+#define IOCTL_DISK_BASE                   FILE_DEVICE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY \
+  CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
+  
+#define IOCTL_DISK_GET_PARTITION_INFO \
+  CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )  
+#define ZwCurrentProcess() NtCurrentProcess()         
+#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )   
+#define ZwCurrentThread() NtCurrentThread()      
+
+typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD;
+
+typedef CONST int CINT;
+typedef LONG KPRIORITY;
+typedef LONG NTSTATUS, *PNTSTATUS;
+typedef UCHAR KIRQL, *PKIRQL;
+typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
+typedef ULONG WAIT_TYPE;
+typedef struct _PEB                             *PPEB;
+typedef CONST char *PCSZ;
+typedef ULONG KPROCESSOR_MODE;
+typedef PVOID PTHREAD_START_ROUTINE;
+typedef short CSHORT;
+typedef CSHORT *PCSHORT;
+#define STATIC static
+
+typedef enum _MODE 
+{
+    KernelMode,
+    UserMode,
+    MaximumMode
+} MODE;
+
+typedef struct _UNICODE_STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PWSTR  Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+
+typedef const UNICODE_STRING* PCUNICODE_STRING;
+
+typedef struct _STRING {
+  USHORT Length;
+  USHORT MaximumLength;
+  PCHAR  Buffer;
+} STRING, *PSTRING;
+
+typedef STRING ANSI_STRING;
+typedef PSTRING PANSI_STRING;
+typedef STRING OEM_STRING;
+typedef PSTRING POEM_STRING;
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
+
+typedef enum _SECTION_INHERIT {
+  ViewShare = 1,
+  ViewUnmap = 2
+} SECTION_INHERIT;
+
+typedef struct _OBJECT_ATTRIBUTES {
+  ULONG Length;
+  HANDLE RootDirectory;
+  PUNICODE_STRING ObjectName;
+  ULONG Attributes;                      
+  PVOID SecurityDescriptor;              
+  PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+
+typedef ULONG KAFFINITY, *PKAFFINITY;
+
+typedef struct _CLIENT_ID {
+  HANDLE  UniqueProcess;
+  HANDLE  UniqueThread;
+} CLIENT_ID, *PCLIENT_ID; 
+
+typedef enum _POOL_TYPE {
+  NonPagedPool,
+  PagedPool,
+  NonPagedPoolMustSucceed,
+  DontUseThisType,
+  NonPagedPoolCacheAligned,
+  PagedPoolCacheAligned,
+  NonPagedPoolCacheAlignedMustS,
+       MaxPoolType,
+       NonPagedPoolSession = 32,
+       PagedPoolSession,
+       NonPagedPoolMustSucceedSession,
+       DontUseThisTypeSession,
+       NonPagedPoolCacheAlignedSession,
+       PagedPoolCacheAlignedSession,
+       NonPagedPoolCacheAlignedMustSSession
+} POOL_TYPE;
+
+typedef enum _EVENT_TYPE {
+  NotificationEvent,
+  SynchronizationEvent
+} EVENT_TYPE;
+
+typedef enum _TIMER_TYPE {
+  NotificationTimer,
+  SynchronizationTimer
+} TIMER_TYPE;
+
+typedef enum _KEY_INFORMATION_CLASS {
+  KeyBasicInformation,
+  KeyNodeInformation,
+  KeyFullInformation,
+  KeyNameInformation,
+  KeyCachedInformation,
+  KeyFlagsInformation
+} KEY_INFORMATION_CLASS;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS {
+  KeyValueBasicInformation,
+  KeyValueFullInformation,
+  KeyValuePartialInformation,
+  KeyValueFullInformationAlign64,
+  KeyValuePartialInformationAlign64
+} KEY_VALUE_INFORMATION_CLASS;
+
+typedef enum _KEY_SET_INFORMATION_CLASS {
+    KeyWriteTimeInformation,
+    KeyUserFlagsInformation,
+    MaxKeySetInfoClass
+} KEY_SET_INFORMATION_CLASS;
+
+typedef struct _KEY_WRITE_TIME_INFORMATION {
+    LARGE_INTEGER LastWriteTime;
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
+
+typedef struct _KEY_USER_FLAGS_INFORMATION {
+    ULONG   UserFlags;
+} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;
+
+typedef struct _IO_STATUS_BLOCK {
+  _ANONYMOUS_UNION union {
+    NTSTATUS  Status;
+    PVOID  Pointer;
+  } DUMMYUNIONNAME;
+  ULONG_PTR  Information;
+} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
+
+typedef VOID NTAPI
+(*PIO_APC_ROUTINE)(
+  IN PVOID ApcContext,
+  IN PIO_STATUS_BLOCK IoStatusBlock,
+  IN ULONG Reserved);
+
+typedef struct _FILE_BASIC_INFORMATION {
+  LARGE_INTEGER  CreationTime;
+  LARGE_INTEGER  LastAccessTime;
+  LARGE_INTEGER  LastWriteTime;
+  LARGE_INTEGER  ChangeTime;
+  ULONG  FileAttributes;
+} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION;
+
+typedef struct _FILE_NETWORK_OPEN_INFORMATION {                 
+  LARGE_INTEGER  CreationTime;                                 
+  LARGE_INTEGER  LastAccessTime;                               
+  LARGE_INTEGER  LastWriteTime;                                
+  LARGE_INTEGER  ChangeTime;                                   
+  LARGE_INTEGER  AllocationSize;                               
+  LARGE_INTEGER  EndOfFile;                                    
+  ULONG  FileAttributes;                                       
+} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION;   
+
+typedef enum _PROCESSINFOCLASS {
+  ProcessBasicInformation,
+  ProcessQuotaLimits,
+  ProcessIoCounters,
+  ProcessVmCounters,
+  ProcessTimes,
+  ProcessBasePriority,
+  ProcessRaisePriority,
+  ProcessDebugPort,
+  ProcessExceptionPort,
+  ProcessAccessToken,
+  ProcessLdtInformation,
+  ProcessLdtSize,
+  ProcessDefaultHardErrorMode,
+  ProcessIoPortHandlers,
+  ProcessPooledUsageAndLimits,
+  ProcessWorkingSetWatch,
+  ProcessUserModeIOPL,
+  ProcessEnableAlignmentFaultFixup,
+  ProcessPriorityClass,
+  ProcessWx86Information,
+  ProcessHandleCount,
+  ProcessAffinityMask,
+  ProcessPriorityBoost,
+  ProcessDeviceMap,
+  ProcessSessionInformation,
+  ProcessForegroundInformation,
+  ProcessWow64Information,
+  ProcessImageFileName,
+  ProcessLUIDDeviceMapsEnabled,
+  ProcessBreakOnTermination,
+  ProcessDebugObjectHandle,
+  ProcessDebugFlags,
+  ProcessHandleTracing,
+  MaxProcessInfoClass
+} PROCESSINFOCLASS;
+
+typedef enum _THREADINFOCLASS {
+  ThreadBasicInformation,
+  ThreadTimes,
+  ThreadPriority,
+  ThreadBasePriority,
+  ThreadAffinityMask,
+  ThreadImpersonationToken,
+  ThreadDescriptorTableEntry,
+  ThreadEnableAlignmentFaultFixup,
+  ThreadEventPair_Reusable,
+  ThreadQuerySetWin32StartAddress,
+  ThreadZeroTlsCell,
+  ThreadPerformanceCount,
+  ThreadAmILastThread,
+  ThreadIdealProcessor,
+  ThreadPriorityBoost,
+  ThreadSetTlsArrayAddress,
+  ThreadIsIoPending,
+  ThreadHideFromDebugger,
+  ThreadBreakOnTermination,
+  MaxThreadInfoClass
+} THREADINFOCLASS;
+
+typedef VOID NTAPI
+(*PKNORMAL_ROUTINE)(
+  IN PVOID  NormalContext,
+  IN PVOID  SystemArgument1,
+  IN PVOID  SystemArgument2);
+  
+typedef VOID NTAPI
+(*PTIMER_APC_ROUTINE)(
+  IN PVOID  TimerContext,
+  IN ULONG  TimerLowValue,
+  IN LONG  TimerHighValue);
+  
+typedef enum _KPROFILE_SOURCE {
+  ProfileTime,
+  ProfileAlignmentFixup,
+  ProfileTotalIssues,
+  ProfilePipelineDry,
+  ProfileLoadInstructions,
+  ProfilePipelineFrozen,
+  ProfileBranchInstructions,
+  ProfileTotalNonissues,
+  ProfileDcacheMisses,
+  ProfileIcacheMisses,
+  ProfileCacheMisses,
+  ProfileBranchMispredictions,
+  ProfileStoreInstructions,
+  ProfileFpInstructions,
+  ProfileIntegerInstructions,
+  Profile2Issue,
+  Profile3Issue,
+  Profile4Issue,
+  ProfileSpecialInstructions,
+  ProfileTotalCycles,
+  ProfileIcacheIssues,
+  ProfileDcacheAccesses,
+  ProfileMemoryBarrierCycles,
+  ProfileLoadLinkedIssues,
+  ProfileMaximum
+} KPROFILE_SOURCE;
+
+typedef struct _KEY_VALUE_ENTRY {
+  PUNICODE_STRING  ValueName;
+  ULONG  DataLength;
+  ULONG  DataOffset;
+  ULONG  Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef enum _FILE_INFORMATION_CLASS {
+  FileDirectoryInformation = 1,
+  FileFullDirectoryInformation,
+  FileBothDirectoryInformation,
+  FileBasicInformation,
+  FileStandardInformation,
+  FileInternalInformation,
+  FileEaInformation,
+  FileAccessInformation,
+  FileNameInformation,
+  FileRenameInformation,
+  FileLinkInformation,
+  FileNamesInformation,
+  FileDispositionInformation,
+  FilePositionInformation,
+  FileFullEaInformation,
+  FileModeInformation,
+  FileAlignmentInformation,
+  FileAllInformation,
+  FileAllocationInformation,
+  FileEndOfFileInformation,
+  FileAlternateNameInformation,
+  FileStreamInformation,
+  FilePipeInformation,
+  FilePipeLocalInformation,
+  FilePipeRemoteInformation,
+  FileMailslotQueryInformation,
+  FileMailslotSetInformation,
+  FileCompressionInformation,
+  FileObjectIdInformation,
+  FileCompletionInformation,
+  FileMoveClusterInformation,
+  FileQuotaInformation,
+  FileReparsePointInformation,
+  FileNetworkOpenInformation,
+  FileAttributeTagInformation,
+  FileTrackingInformation,
+  FileIdBothDirectoryInformation,
+  FileIdFullDirectoryInformation,
+  FileValidDataLengthInformation,
+  FileShortNameInformation,
+  FileMaximumInformation
+} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
+
+typedef enum _FSINFOCLASS {
+  FileFsVolumeInformation = 1,
+  FileFsLabelInformation,
+  FileFsSizeInformation,
+  FileFsDeviceInformation,
+  FileFsAttributeInformation,
+  FileFsControlInformation,
+  FileFsFullSizeInformation,
+  FileFsObjectIdInformation,
+  FileFsDriverPathInformation,
+  FileFsMaximumInformation
+} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION {
+  ULONG  TitleIndex;
+  ULONG  Type;
+  ULONG  DataLength;
+  UCHAR  Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+typedef struct _FILE_ZERO_DATA_INFORMATION {
+    LARGE_INTEGER FileOffset;
+    LARGE_INTEGER BeyondFinalZero;
+} FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_INFORMATION;
+
+typedef struct FILE_ALLOCATED_RANGE_BUFFER {
+    LARGE_INTEGER FileOffset;
+    LARGE_INTEGER Length;
+} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER;
+
+typedef struct _DISPATCHER_HEADER {
+  UCHAR  Type;
+  UCHAR  Absolute;
+  UCHAR  Size;
+  UCHAR  Inserted;
+  LONG  SignalState;
+  LIST_ENTRY  WaitListHead;
+} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
+
+typedef struct _KEVENT {
+  DISPATCHER_HEADER  Header;
+} KEVENT, *PKEVENT;
+
+typedef struct _KSEMAPHORE {
+    DISPATCHER_HEADER Header;
+    LONG Limit;
+} KSEMAPHORE, *PKSEMAPHORE;
+
+typedef struct _FAST_MUTEX {
+  LONG  Count;
+  struct _KTHREAD  *Owner;
+  ULONG  Contention;
+  KEVENT  Event;
+  ULONG  OldIrql;
+} FAST_MUTEX, *PFAST_MUTEX;
+
+typedef struct _KTIMER {
+  DISPATCHER_HEADER  Header;
+  ULARGE_INTEGER  DueTime;
+  LIST_ENTRY  TimerListEntry;
+  struct _KDPC  *Dpc;
+  LONG  Period;
+} KTIMER, *PKTIMER;
+
+typedef struct _KMUTANT {
+  DISPATCHER_HEADER  Header;
+  LIST_ENTRY  MutantListEntry;
+  struct _KTHREAD *OwnerThread;
+  BOOLEAN  Abandoned;
+  UCHAR  ApcDisable;
+} KMUTANT, *PKMUTANT, KMUTEX, *PKMUTEX;
+
+typedef struct _PROCESS_BASIC_INFORMATION
+{
+       NTSTATUS ExitStatus;
+       PPEB PebBaseAddress;
+       KAFFINITY AffinityMask;
+       KPRIORITY BasePriority;
+       ULONG UniqueProcessId;
+       ULONG InheritedFromUniqueProcessId;
+} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
+
+typedef enum _KWAIT_REASON {
+  Executive,
+  FreePage,
+  PageIn,
+  PoolAllocation,
+  DelayExecution,
+  Suspended,
+  UserRequest,
+  WrExecutive,
+  WrFreePage,
+  WrPageIn,
+  WrPoolAllocation,
+  WrDelayExecution,
+  WrSuspended,
+  WrUserRequest,
+  WrEventPair,
+  WrQueue,
+  WrLpcReceive,
+  WrLpcReply,
+  WrVirtualMemory,
+  WrPageOut,
+  WrRendezvous,
+  Spare2,
+  Spare3,
+  Spare4,
+  Spare5,
+  Spare6,
+  WrKernel,
+  MaximumWaitReason
+} KWAIT_REASON;
+
+#define PROCESSOR_FEATURE_MAX 64
+#define KI_USER_SHARED_DATA               0xffdf0000
+
+typedef struct _KSYSTEM_TIME {
+    ULONG LowPart;
+    LONG High1Time;
+    LONG High2Time;
+} KSYSTEM_TIME, *PKSYSTEM_TIME;
+
+typedef enum _NT_PRODUCT_TYPE {
+       NtProductWinNt = 1,
+       NtProductLanManNt,
+       NtProductServer
+} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
+
+typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE {
+    StandardDesign,
+    NEC98x86,
+    EndAlternatives
+} ALTERNATIVE_ARCHITECTURE_TYPE;
+
+typedef struct _KUSER_SHARED_DATA {
+    ULONG TickCountLowDeprecated;
+    ULONG TickCountMultiplier;
+    volatile KSYSTEM_TIME InterruptTime;
+    volatile KSYSTEM_TIME SystemTime;
+    volatile KSYSTEM_TIME TimeZoneBias;
+    USHORT ImageNumberLow;
+    USHORT ImageNumberHigh;
+    WCHAR NtSystemRoot[ 260 ];
+    ULONG MaxStackTraceDepth;
+    ULONG CryptoExponent;
+    ULONG TimeZoneId;
+    ULONG LargePageMinimum;
+    ULONG Reserved2[ 7 ];
+    NT_PRODUCT_TYPE NtProductType;
+    BOOLEAN ProductTypeIsValid;
+    ULONG NtMajorVersion;
+    ULONG NtMinorVersion;
+    BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
+    ULONG Reserved1;
+    ULONG Reserved3;
+    volatile ULONG TimeSlip;
+    ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
+    LARGE_INTEGER SystemExpirationDate;
+    ULONG SuiteMask;
+    BOOLEAN KdDebuggerEnabled;
+    volatile ULONG ActiveConsoleId;
+    volatile ULONG DismountCount;
+    ULONG ComPlusPackage;
+    ULONG LastSystemRITEventTickCount;
+    ULONG NumberOfPhysicalPages;
+    BOOLEAN SafeBootMode;
+    ULONG TraceLogging;
+    ULONGLONG   Fill0;
+    ULONGLONG   SystemCall[4];
+    union {
+        volatile KSYSTEM_TIME TickCount;
+        volatile ULONG64 TickCountQuad;
+    };
+} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
+
+#define MAXIMUM_LEADBYTES 12
+
+typedef struct _CPTABLEINFO 
+{
+    USHORT CodePage;                    
+    USHORT MaximumCharacterSize;
+    USHORT DefaultChar;
+    USHORT UniDefaultChar;
+    USHORT TransDefaultChar;
+    USHORT TransUniDefaultChar;
+    USHORT DBCSCodePage;
+    UCHAR  LeadByte[MAXIMUM_LEADBYTES];
+    PUSHORT MultiByteTable;
+    PVOID   WideCharTable;
+    PUSHORT DBCSRanges;
+    PUSHORT DBCSOffsets;
+} CPTABLEINFO, *PCPTABLEINFO;
+
+typedef struct _NLSTABLEINFO 
+{
+    CPTABLEINFO OemTableInfo;
+    CPTABLEINFO AnsiTableInfo;
+    PUSHORT UpperCaseTable;
+    PUSHORT LowerCaseTable;
+} NLSTABLEINFO, *PNLSTABLEINFO;
+
+typedef struct _VM_COUNTERS 
+{
+    SIZE_T PeakVirtualSize;
+    SIZE_T VirtualSize;
+    ULONG PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+} VM_COUNTERS;
+typedef VM_COUNTERS *PVM_COUNTERS;
+
+typedef struct _VM_COUNTERS_EX 
+{
+    SIZE_T PeakVirtualSize;
+    SIZE_T VirtualSize;
+    ULONG PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+    SIZE_T PrivateUsage;
+} VM_COUNTERS_EX;
+typedef VM_COUNTERS_EX *PVM_COUNTERS_EX;
+
+typedef struct _COMPRESSED_DATA_INFO 
+{
+    USHORT  CompressionFormatAndEngine;
+    UCHAR   CompressionUnitShift;
+    UCHAR   ChunkShift;
+    UCHAR   ClusterShift;
+    UCHAR   Reserved;
+    USHORT  NumberOfChunks;
+    ULONG   CompressedChunkSizes[ANYSIZE_ARRAY];
+} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
+
+typedef struct _GENERATE_NAME_CONTEXT 
+{
+    USHORT  Checksum;
+    BOOLEAN CheckSumInserted;
+    UCHAR   NameLength;
+    WCHAR   NameBuffer[8];
+    ULONG   ExtensionLength;
+    WCHAR   ExtensionBuffer[4];
+    ULONG   LastIndexValue;
+} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
+
+typedef struct _RTL_SPLAY_LINKS {
+    struct _RTL_SPLAY_LINKS *Parent;
+    struct _RTL_SPLAY_LINKS *LeftChild;
+    struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS;
+typedef RTL_SPLAY_LINKS *PRTL_SPLAY_LINKS;
+
+struct _RTL_AVL_TABLE;
+struct _RTL_GENERIC_TABLE;
+
+typedef enum _TABLE_SEARCH_RESULT{
+    TableEmptyTree,
+    TableFoundNode,
+    TableInsertAsLeft,
+    TableInsertAsRight
+} TABLE_SEARCH_RESULT;
+
+typedef
+NTSTATUS STDCALL (*PRTL_AVL_MATCH_FUNCTION)(
+    struct _RTL_AVL_TABLE *Table,
+    PVOID UserData,
+    PVOID MatchData
+);
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS 
+{
+    GenericLessThan,
+    GenericGreaterThan,
+    GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
+typedef
+RTL_GENERIC_COMPARE_RESULTS STDCALL
+(*PRTL_AVL_COMPARE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    PVOID FirstStruct,
+    PVOID SecondStruct
+);
+
+typedef
+RTL_GENERIC_COMPARE_RESULTS STDCALL
+(*PRTL_GENERIC_COMPARE_ROUTINE)(
+    struct _RTL_GENERIC_TABLE *Table,
+    PVOID FirstStruct,
+    PVOID SecondStruct
+);
+
+typedef
+PVOID STDCALL
+(*PRTL_GENERIC_ALLOCATE_ROUTINE) (
+    struct _RTL_GENERIC_TABLE *Table,
+    LONG ByteSize
+);
+
+typedef
+VOID STDCALL
+(*PRTL_GENERIC_FREE_ROUTINE) (
+    struct _RTL_GENERIC_TABLE *Table,
+    PVOID Buffer
+);
+    
+typedef
+VOID STDCALL
+(*PRTL_AVL_ALLOCATE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    LONG ByteSize
+);
+
+typedef
+VOID STDCALL
+(*PRTL_AVL_FREE_ROUTINE) (
+    struct _RTL_AVL_TABLE *Table,
+    PVOID Buffer
+);
+
+typedef struct _RTL_GENERIC_TABLE 
+{
+    PRTL_SPLAY_LINKS TableRoot;
+    LIST_ENTRY InsertOrderList;
+    PLIST_ENTRY OrderedPointer;
+    ULONG WhichOrderedElement;
+    ULONG NumberGenericTableElements;
+    PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
+    PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
+    PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
+    PVOID TableContext;
+} RTL_GENERIC_TABLE;
+typedef RTL_GENERIC_TABLE *PRTL_GENERIC_TABLE;
+
+typedef struct _RTL_BALANCED_LINKS 
+{
+    struct _RTL_BALANCED_LINKS *Parent;
+    struct _RTL_BALANCED_LINKS *LeftChild;
+    struct _RTL_BALANCED_LINKS *RightChild;
+    CHAR Balance;
+    UCHAR Reserved[3];
+} RTL_BALANCED_LINKS;
+typedef RTL_BALANCED_LINKS *PRTL_BALANCED_LINKS;
+   
+typedef struct _RTL_AVL_TABLE 
+{
+    RTL_BALANCED_LINKS BalancedRoot;
+    PVOID OrderedPointer;
+    ULONG WhichOrderedElement;
+    ULONG NumberGenericTableElements;
+    ULONG DepthOfTree;
+    PRTL_BALANCED_LINKS RestartKey;
+    ULONG DeleteCount;
+    PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
+    PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
+    PRTL_AVL_FREE_ROUTINE FreeRoutine;
+    PVOID TableContext;
+} RTL_AVL_TABLE;
+typedef RTL_AVL_TABLE *PRTL_AVL_TABLE;
+
+#define RTL_REGISTRY_ABSOLUTE     0
+#define RTL_REGISTRY_SERVICES     1
+#define RTL_REGISTRY_CONTROL      2
+#define RTL_REGISTRY_WINDOWS_NT   3
+#define RTL_REGISTRY_DEVICEMAP    4
+#define RTL_REGISTRY_USER         5
+#define RTL_REGISTRY_MAXIMUM      6
+#define RTL_REGISTRY_HANDLE       0x40000000
+#define RTL_REGISTRY_OPTIONAL     0x80000000
+
+typedef NTSTATUS STDCALL
+(*PRTL_QUERY_REGISTRY_ROUTINE)(
+    IN PWSTR ValueName,
+    IN ULONG ValueType,
+    IN PVOID ValueData,
+    IN ULONG ValueLength,
+    IN PVOID Context,
+    IN PVOID EntryContext
+);
+
+typedef struct _RTL_QUERY_REGISTRY_TABLE 
+{
+    PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
+    ULONG Flags;
+    PWSTR Name;
+    PVOID EntryContext;
+    ULONG DefaultType;
+    PVOID DefaultData;
+    ULONG DefaultLength;
+} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
+
+typedef struct _KEY_VALUE_BASIC_INFORMATION 
+{
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef struct _KEY_VALUE_FULL_INFORMATION 
+{
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG DataOffset;
+    ULONG DataLength;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef struct _KEY_BASIC_INFORMATION 
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG TitleIndex;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+#define RTL_QUERY_REGISTRY_SUBKEY   0x00000001
+#define RTL_QUERY_REGISTRY_TOPKEY   0x00000002
+#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004
+#define RTL_QUERY_REGISTRY_NOVALUE  0x00000008
+#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010
+#define RTL_QUERY_REGISTRY_DIRECT   0x00000020
+#define RTL_QUERY_REGISTRY_DELETE   0x00000040
+
+#define SID_MAX_SUB_AUTHORITIES     15
+
+typedef struct _TIME_FIELDS 
+{
+    CSHORT Year;
+    CSHORT Month;
+    CSHORT Day;
+    CSHORT Hour;
+    CSHORT Minute;
+    CSHORT Second;
+    CSHORT Milliseconds;
+    CSHORT Weekday;
+} TIME_FIELDS;
+typedef TIME_FIELDS *PTIME_FIELDS;
+
+typedef struct _UNICODE_PREFIX_TABLE_ENTRY 
+{
+    CSHORT NodeTypeCode;
+    CSHORT NameLength;
+    struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
+    struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
+    RTL_SPLAY_LINKS Links;
+    PUNICODE_STRING Prefix;
+} UNICODE_PREFIX_TABLE_ENTRY;
+typedef UNICODE_PREFIX_TABLE_ENTRY *PUNICODE_PREFIX_TABLE_ENTRY;
+
+typedef struct _UNICODE_PREFIX_TABLE 
+{
+    CSHORT NodeTypeCode;
+    CSHORT NameLength;
+    PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
+    PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
+} UNICODE_PREFIX_TABLE;
+typedef UNICODE_PREFIX_TABLE *PUNICODE_PREFIX_TABLE;
+
+#define VER_MINORVERSION                0x0000001
+#define VER_MAJORVERSION                0x0000002
+#define VER_BUILDNUMBER                 0x0000004
+#define VER_PLATFORMID                  0x0000008
+#define VER_SERVICEPACKMINOR            0x0000010
+#define VER_SERVICEPACKMAJOR            0x0000020
+#define VER_SUITENAME                   0x0000040
+#define VER_PRODUCT_TYPE                0x0000080
+#define VER_PLATFORM_WIN32s             0
+#define VER_PLATFORM_WIN32_WINDOWS      1
+#define VER_PLATFORM_WIN32_NT           2
+#define VER_EQUAL                       1
+#define VER_GREATER                     2
+#define VER_GREATER_EQUAL               3
+#define VER_LESS                        4
+#define VER_LESS_EQUAL                  5
+#define VER_AND                         6
+#define VER_OR                          7
+#define VER_CONDITION_MASK              7
+#define VER_NUM_BITS_PER_CONDITION_MASK 3
+
+typedef LPOSVERSIONINFOW PRTL_OSVERSIONINFOW;
+typedef OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW;
+typedef LPOSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW;
+
+typedef enum _MEDIA_TYPE {
+  Unknown,
+  F5_1Pt2_512,
+  F3_1Pt44_512,
+  F3_2Pt88_512,
+  F3_20Pt8_512,
+  F3_720_512,
+  F5_360_512,
+  F5_320_512,
+  F5_320_1024,
+  F5_180_512,
+  F5_160_512,
+  RemovableMedia,
+  FixedMedia,
+  F3_120M_512,
+  F3_640_512,
+  F5_640_512,
+  F5_720_512,
+  F3_1Pt2_512,
+  F3_1Pt23_1024,
+  F5_1Pt23_1024,
+  F3_128Mb_512,
+  F3_230Mb_512,
+  F8_256_128
+} MEDIA_TYPE, *PMEDIA_TYPE;
+
+typedef struct _PARTITION_INFORMATION {
+  LARGE_INTEGER  StartingOffset;
+  LARGE_INTEGER  PartitionLength;
+  DWORD  HiddenSectors;
+  DWORD  PartitionNumber;
+  BYTE  PartitionType;
+  BOOLEAN  BootIndicator;
+  BOOLEAN  RecognizedPartition;
+  BOOLEAN  RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+typedef struct _DISK_GEOMETRY {
+  LARGE_INTEGER  Cylinders;
+  MEDIA_TYPE  MediaType;
+  ULONG  TracksPerCylinder;
+  ULONG  SectorsPerTrack;
+  ULONG  BytesPerSector;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
+#endif
+
diff --git a/reactos/include/ndk/zwfuncs.h b/reactos/include/ndk/zwfuncs.h
new file mode 100644 (file)
index 0000000..a75a6c4
--- /dev/null
@@ -0,0 +1,4075 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/zwfuncs.h
+ * PURPOSE:         Defintions for Native Functions not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _ZWFUNCS_H
+#define _ZWFUNCS_H
+
+/* DEPENDENCIES **************************************************************/
+#include "lpctypes.h"
+#include "zwtypes.h"
+
+/* FUNCTION TYPES ************************************************************/
+
+/* PROTOTYPES ****************************************************************/
+
+/* FIXME: FILE NEEDS CLEANUP */
+NTSTATUS 
+STDCALL
+NtAcceptConnectPort(
+    PHANDLE PortHandle,
+    HANDLE NamedPortHandle,
+    PLPC_MESSAGE ServerReply,
+    BOOLEAN AcceptIt,
+    PLPC_SECTION_WRITE WriteMap,
+    PLPC_SECTION_READ ReadMap
+);
+
+NTSTATUS
+STDCALL
+NtAddBootEntry(
+    IN PUNICODE_STRING EntryName,
+    IN PUNICODE_STRING EntryValue
+);
+
+NTSTATUS
+STDCALL
+ZwAddBootEntry(
+    IN PUNICODE_STRING EntryName,
+    IN PUNICODE_STRING EntryValue
+);
+
+NTSTATUS 
+STDCALL 
+NtAdjustGroupsToken(
+    IN HANDLE TokenHandle,
+    IN BOOLEAN  ResetToDefault,
+    IN PTOKEN_GROUPS  NewState,
+    IN ULONG  BufferLength,
+    OUT PTOKEN_GROUPS  PreviousState OPTIONAL,
+    OUT PULONG  ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ZwAdjustGroupsToken(
+    IN HANDLE TokenHandle,
+    IN BOOLEAN  ResetToDefault,
+    IN PTOKEN_GROUPS  NewState,
+    IN ULONG  BufferLength,
+    OUT PTOKEN_GROUPS  PreviousState,
+    OUT PULONG  ReturnLength
+);
+
+NTSTATUS 
+STDCALL 
+NtAdjustPrivilegesToken(
+    IN HANDLE  TokenHandle,
+    IN BOOLEAN  DisableAllPrivileges,
+    IN PTOKEN_PRIVILEGES  NewState,
+    IN ULONG  BufferLength,
+    OUT PTOKEN_PRIVILEGES  PreviousState,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL 
+ZwAdjustPrivilegesToken(
+    IN HANDLE  TokenHandle,
+    IN BOOLEAN  DisableAllPrivileges,
+    IN PTOKEN_PRIVILEGES  NewState,
+    IN ULONG  BufferLength,
+    OUT PTOKEN_PRIVILEGES  PreviousState,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtAlertResumeThread(
+    IN HANDLE ThreadHandle,
+    OUT PULONG SuspendCount
+);
+
+NTSTATUS
+STDCALL
+ZwAlertResumeThread(
+    IN HANDLE ThreadHandle,
+    OUT PULONG SuspendCount
+);
+
+NTSTATUS
+STDCALL
+NtAlertThread(
+    IN HANDLE ThreadHandle
+);
+
+NTSTATUS
+STDCALL
+ZwAlertThread(
+    IN HANDLE ThreadHandle
+);
+
+NTSTATUS
+STDCALL
+NtAllocateLocallyUniqueId(
+    OUT LUID *LocallyUniqueId
+);
+
+NTSTATUS
+STDCALL
+ZwAllocateLocallyUniqueId(
+    OUT PLUID Luid
+);
+
+NTSTATUS
+STDCALL
+NtAllocateVirtualMemory (
+    IN HANDLE ProcessHandle,
+    IN OUT PVOID *BaseAddress,
+    IN ULONG  ZeroBits,
+    IN OUT PULONG  RegionSize,
+    IN ULONG  AllocationType,
+    IN ULONG  Protect
+);
+
+NTSTATUS
+STDCALL
+ZwAllocateVirtualMemory (
+    IN HANDLE ProcessHandle,
+    IN OUT PVOID *BaseAddress,
+    IN ULONG  ZeroBits,
+    IN OUT PULONG  RegionSize,
+    IN ULONG  AllocationType,
+    IN ULONG  Protect
+);
+
+NTSTATUS 
+STDCALL 
+NtAssignProcessToJobObject(
+    HANDLE JobHandle,
+    HANDLE ProcessHandle)
+;
+
+NTSTATUS 
+STDCALL 
+ZwAssignProcessToJobObject(
+    HANDLE JobHandle,
+    HANDLE ProcessHandle
+);
+
+NTSTATUS 
+STDCALL 
+NtCallbackReturn(
+    PVOID Result,
+    ULONG ResultLength,
+    NTSTATUS Status
+);
+
+NTSTATUS 
+STDCALL 
+ZwCallbackReturn(
+    PVOID Result,
+    ULONG ResultLength,
+    NTSTATUS Status
+);
+
+NTSTATUS
+STDCALL
+NtCancelIoFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock
+);
+
+NTSTATUS
+STDCALL
+ZwCancelIoFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock
+);
+
+NTSTATUS
+STDCALL
+NtClearEvent(
+    IN HANDLE  EventHandle
+);
+
+NTSTATUS
+STDCALL
+ZwClearEvent(
+    IN HANDLE  EventHandle
+);
+
+NTSTATUS 
+STDCALL 
+NtCreateJobObject(
+    PHANDLE JobHandle, 
+    ACCESS_MASK DesiredAccess,
+    POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS 
+STDCALL 
+ZwCreateJobObject(
+    PHANDLE JobHandle, 
+    ACCESS_MASK DesiredAccess,
+    POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtClose(
+    IN HANDLE Handle
+);
+
+NTSTATUS
+STDCALL
+ZwClose(
+    IN HANDLE Handle
+);
+
+NTSTATUS
+STDCALL
+NtCloseObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN BOOLEAN GenerateOnClose
+);
+
+NTSTATUS
+STDCALL
+ZwCloseObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN BOOLEAN GenerateOnClose
+);
+
+NTSTATUS 
+STDCALL
+NtCompleteConnectPort(
+    HANDLE PortHandle
+);
+
+NTSTATUS 
+STDCALL
+ZwCompleteConnectPort(
+    HANDLE PortHandle
+);
+
+NTSTATUS 
+STDCALL
+NtConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PLPC_SECTION_WRITE SectionInfo,
+    PLPC_SECTION_READ MapInfo,
+    PULONG MaxMessageSize,
+    PVOID ConnectInfo,
+    PULONG ConnectInfoLength
+);
+
+NTSTATUS 
+STDCALL
+ZwConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PLPC_SECTION_WRITE SectionInfo,
+    PLPC_SECTION_READ MapInfo,
+    PULONG MaxMessageSize,
+    PVOID ConnectInfo,
+    PULONG ConnectInfoLength
+);
+
+NTSTATUS
+STDCALL
+NtCreateDirectoryObject(
+    OUT PHANDLE DirectoryHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwCreateDirectoryObject(
+    OUT PHANDLE DirectoryHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtCreateEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN EVENT_TYPE EventType,
+    IN BOOLEAN InitialState
+);
+
+NTSTATUS
+STDCALL
+ZwCreateEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN EVENT_TYPE EventType,
+    IN BOOLEAN InitialState
+);
+
+NTSTATUS
+STDCALL
+NtCreateEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwCreateEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtCreateFile(
+    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
+);
+
+NTSTATUS
+STDCALL
+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
+);
+
+NTSTATUS
+STDCALL
+NtCreateIoCompletion(
+    OUT PHANDLE             IoCompletionHandle,
+    IN  ACCESS_MASK         DesiredAccess,
+    IN  POBJECT_ATTRIBUTES  ObjectAttributes,
+    IN  ULONG               NumberOfConcurrentThreads
+    );
+
+NTSTATUS
+STDCALL
+ZwCreateIoCompletion(
+   OUT PHANDLE             IoCompletionHandle,
+   IN  ACCESS_MASK         DesiredAccess,
+   IN  POBJECT_ATTRIBUTES  ObjectAttributes,
+   IN  ULONG               NumberOfConcurrentThreads
+   );
+
+NTSTATUS 
+STDCALL
+NtCreateKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN ULONG TitleIndex,
+    IN PUNICODE_STRING Class OPTIONAL,
+    IN ULONG CreateOptions,
+    IN PULONG Disposition OPTIONAL
+);
+
+NTSTATUS 
+STDCALL
+ZwCreateKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN ULONG TitleIndex,
+    IN PUNICODE_STRING Class OPTIONAL,
+    IN ULONG CreateOptions,
+    IN PULONG Disposition OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtCreateMailslotFile(
+    OUT PHANDLE MailSlotFileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG FileAttributes,
+    IN ULONG ShareAccess,
+    IN ULONG MaxMessageSize,
+    IN PLARGE_INTEGER TimeOut
+);
+
+NTSTATUS
+STDCALL
+ZwCreateMailslotFile(
+    OUT PHANDLE MailSlotFileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG FileAttributes,
+    IN ULONG ShareAccess,
+    IN ULONG MaxMessageSize,
+    IN PLARGE_INTEGER TimeOut
+);
+
+NTSTATUS
+STDCALL
+NtCreateMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN InitialOwner
+);
+
+NTSTATUS
+STDCALL
+ZwCreateMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN InitialOwner
+);
+
+NTSTATUS 
+STDCALL
+NtCreateNamedPipeFile(
+    OUT PHANDLE NamedPipeFileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG ShareAccess,
+    IN ULONG CreateDisposition,
+    IN ULONG CreateOptions,
+    IN ULONG WriteModeMessage,
+    IN ULONG ReadModeMessage,
+    IN ULONG NonBlocking,
+    IN ULONG MaxInstances,
+    IN ULONG InBufferSize,
+    IN ULONG OutBufferSize,
+    IN PLARGE_INTEGER DefaultTimeOut
+);
+
+NTSTATUS 
+STDCALL
+ZwCreateNamedPipeFile(
+    OUT PHANDLE NamedPipeFileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG ShareAccess,
+    IN ULONG CreateDisposition,
+    IN ULONG CreateOptions,
+    IN ULONG WriteModeMessage,
+    IN ULONG ReadModeMessage,
+    IN ULONG NonBlocking,
+    IN ULONG MaxInstances,
+    IN ULONG InBufferSize,
+    IN ULONG OutBufferSize,
+    IN PLARGE_INTEGER DefaultTimeOut
+);
+
+NTSTATUS 
+STDCALL
+NtCreatePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS 
+STDCALL
+NtCreatePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtCreateProcess(
+    OUT PHANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN HANDLE ParentProcess,
+    IN BOOLEAN InheritObjectTable,
+    IN HANDLE SectionHandle OPTIONAL,
+    IN HANDLE DebugPort OPTIONAL,
+    IN HANDLE ExceptionPort OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwCreateProcess(
+    OUT PHANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN HANDLE ParentProcess,
+    IN BOOLEAN InheritObjectTable,
+    IN HANDLE SectionHandle OPTIONAL,
+    IN HANDLE DebugPort OPTIONAL,
+    IN HANDLE ExceptionPort OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtCreateSection(
+    OUT PHANDLE SectionHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN PLARGE_INTEGER MaximumSize OPTIONAL,
+    IN ULONG SectionPageProtection OPTIONAL,
+    IN ULONG AllocationAttributes,
+    IN HANDLE FileHandle OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwCreateSection(
+    OUT PHANDLE SectionHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN PLARGE_INTEGER MaximumSize OPTIONAL,
+    IN ULONG SectionPageProtection OPTIONAL,
+    IN ULONG AllocationAttributes,
+    IN HANDLE FileHandle OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtCreateSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN LONG InitialCount,
+    IN LONG MaximumCount
+);
+
+NTSTATUS
+STDCALL
+ZwCreateSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN LONG InitialCount,
+    IN LONG MaximumCount
+);
+
+NTSTATUS
+STDCALL
+NtCreateSymbolicLinkObject(
+    OUT PHANDLE SymbolicLinkHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PUNICODE_STRING Name
+);
+
+NTSTATUS
+STDCALL
+ZwCreateSymbolicLinkObject(
+    OUT PHANDLE SymbolicLinkHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PUNICODE_STRING Name
+);
+
+NTSTATUS
+STDCALL
+NtCreateTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN TIMER_TYPE TimerType
+);
+
+NTSTATUS
+STDCALL
+ZwCreateTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN TIMER_TYPE TimerType
+);
+
+NTSTATUS
+STDCALL
+NtCreateToken(
+    OUT PHANDLE TokenHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN TOKEN_TYPE TokenType,
+    IN PLUID AuthenticationId,
+    IN PLARGE_INTEGER ExpirationTime,
+    IN PTOKEN_USER TokenUser,
+    IN PTOKEN_GROUPS TokenGroups,
+    IN PTOKEN_PRIVILEGES TokenPrivileges,
+    IN PTOKEN_OWNER TokenOwner,
+    IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup,
+    IN PTOKEN_DEFAULT_DACL TokenDefaultDacl,
+    IN PTOKEN_SOURCE TokenSource
+);
+
+NTSTATUS
+STDCALL
+ZwCreateToken(
+    OUT PHANDLE TokenHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN TOKEN_TYPE TokenType,
+    IN PLUID AuthenticationId,
+    IN PLARGE_INTEGER ExpirationTime,
+    IN PTOKEN_USER TokenUser,
+    IN PTOKEN_GROUPS TokenGroups,
+    IN PTOKEN_PRIVILEGES TokenPrivileges,
+    IN PTOKEN_OWNER TokenOwner,
+    IN PTOKEN_PRIMARY_GROUP TokenPrimaryGroup,
+    IN PTOKEN_DEFAULT_DACL TokenDefaultDacl,
+    IN PTOKEN_SOURCE TokenSource
+);
+
+NTSTATUS 
+STDCALL
+NtCreateWaitablePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS 
+STDCALL
+ZwCreateWaitablePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtDeleteAtom(
+    IN RTL_ATOM Atom
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteAtom(
+    IN RTL_ATOM Atom
+);
+
+NTSTATUS
+STDCALL
+NtDeleteBootEntry(
+    IN PUNICODE_STRING EntryName,
+    IN PUNICODE_STRING EntryValue
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteBootEntry(
+    IN PUNICODE_STRING EntryName,
+    IN PUNICODE_STRING EntryValue
+);
+
+NTSTATUS
+STDCALL
+NtDeleteFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtDeleteKey(
+    IN HANDLE KeyHandle
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteKey(
+    IN HANDLE KeyHandle
+);
+
+NTSTATUS
+STDCALL
+NtDeleteObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName, 
+    IN PVOID HandleId, 
+    IN BOOLEAN GenerateOnClose 
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName, 
+    IN PVOID HandleId, 
+    IN BOOLEAN GenerateOnClose 
+);  
+
+NTSTATUS
+STDCALL
+NtDeleteValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName
+);
+
+NTSTATUS
+STDCALL
+ZwDeleteValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName
+);
+
+NTSTATUS
+STDCALL
+NtDeviceIoControlFile(
+    IN HANDLE DeviceHandle,
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, 
+    IN PVOID UserApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock, 
+    IN ULONG IoControlCode,
+    IN PVOID InputBuffer, 
+    IN ULONG InputBufferSize,
+    OUT PVOID OutputBuffer,
+    IN ULONG OutputBufferSize
+);
+
+NTSTATUS
+STDCALL
+ZwDeviceIoControlFile(
+    IN HANDLE DeviceHandle,
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, 
+    IN PVOID UserApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock, 
+    IN ULONG IoControlCode,
+    IN PVOID InputBuffer, 
+    IN ULONG InputBufferSize,
+    OUT PVOID OutputBuffer,
+    IN ULONG OutputBufferSize
+);
+
+NTSTATUS
+STDCALL
+NtDisplayString(
+    IN PUNICODE_STRING DisplayString
+);
+
+NTSTATUS
+STDCALL
+ZwDisplayString(
+    IN PUNICODE_STRING DisplayString
+);
+
+NTSTATUS
+STDCALL
+NtEnumerateBootEntries(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+ZwEnumerateBootEntries(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+NtEnumerateKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwEnumerateKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+NTSTATUS
+STDCALL
+NtEnumerateValueKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwEnumerateValueKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtFlushBuffersFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock
+);
+
+NTSTATUS
+STDCALL
+ZwFlushBuffersFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock
+);
+
+NTSTATUS
+STDCALL
+NtFlushKey(
+    IN HANDLE KeyHandle
+);
+
+NTSTATUS
+STDCALL
+ZwFlushKey(
+    IN HANDLE KeyHandle
+);
+NTSTATUS 
+STDCALL 
+NtFlushWriteBuffer(VOID);
+
+NTSTATUS 
+STDCALL 
+ZwFlushWriteBuffer(VOID);                      
+
+NTSTATUS 
+STDCALL 
+NtFreeVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID  *BaseAddress,    
+    IN PULONG  RegionSize,    
+    IN ULONG  FreeType
+);
+                    
+NTSTATUS 
+STDCALL 
+ZwFreeVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID  *BaseAddress,    
+    IN PULONG  RegionSize,    
+    IN ULONG  FreeType
+);
+
+NTSTATUS
+STDCALL
+NtFsControlFile(
+    IN HANDLE DeviceHandle,
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock, 
+    IN ULONG IoControlCode,
+    IN PVOID InputBuffer, 
+    IN ULONG InputBufferSize,
+    OUT PVOID OutputBuffer,
+    IN ULONG OutputBufferSize
+);
+
+NTSTATUS
+STDCALL
+ZwFsControlFile(
+    IN HANDLE DeviceHandle,
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock, 
+    IN ULONG IoControlCode,
+    IN PVOID InputBuffer, 
+    IN ULONG InputBufferSize,
+    OUT PVOID OutputBuffer,
+    IN ULONG OutputBufferSize
+);
+
+NTSTATUS
+STDCALL 
+NtGetContextThread(
+    IN HANDLE ThreadHandle,
+    OUT PCONTEXT Context
+);
+
+NTSTATUS
+STDCALL 
+ZwGetContextThread(
+    IN HANDLE ThreadHandle,
+    OUT PCONTEXT Context
+);
+
+NTSTATUS 
+STDCALL
+NtImpersonateClientOfPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE ClientMessage
+);
+
+NTSTATUS 
+STDCALL
+ZwImpersonateClientOfPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE ClientMessage
+);
+
+NTSTATUS
+STDCALL 
+NtImpersonateThread(
+    IN HANDLE ThreadHandle,
+    IN HANDLE ThreadToImpersonate,
+    IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
+);
+
+NTSTATUS
+STDCALL 
+ZwImpersonateThread(
+    IN HANDLE ThreadHandle,
+    IN HANDLE ThreadToImpersonate,
+    IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
+);
+
+NTSTATUS
+STDCALL
+NtInitiatePowerAction(
+    POWER_ACTION SystemAction,
+    SYSTEM_POWER_STATE MinSystemState,
+    ULONG Flags,
+    BOOLEAN Asynchronous
+);
+
+NTSTATUS
+STDCALL
+ZwInitiatePowerAction(
+    POWER_ACTION SystemAction,
+    SYSTEM_POWER_STATE MinSystemState,
+    ULONG Flags,
+    BOOLEAN Asynchronous
+);
+
+NTSTATUS
+STDCALL 
+NtInitializeRegistry(
+    BOOLEAN SetUpBoot
+);
+
+NTSTATUS
+STDCALL 
+ZwInitializeRegistry(
+    BOOLEAN SetUpBoot
+);
+
+NTSTATUS
+STDCALL
+NtIsProcessInJob(
+    IN HANDLE ProcessHandle,
+    IN HANDLE JobHandle OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwIsProcessInJob(
+    IN HANDLE ProcessHandle,
+    IN HANDLE JobHandle OPTIONAL
+);
+
+NTSTATUS 
+STDCALL
+NtListenPort(HANDLE PortHandle,
+             PLPC_MESSAGE LpcMessage
+);
+
+NTSTATUS 
+STDCALL
+ZwListenPort(HANDLE PortHandle,
+             PLPC_MESSAGE LpcMessage
+);
+
+STDCALL 
+NtLoadDriver(
+    IN PUNICODE_STRING DriverServiceName
+);
+
+NTSTATUS
+STDCALL 
+ZwLoadDriver(
+    IN PUNICODE_STRING DriverServiceName
+);
+
+NTSTATUS 
+STDCALL
+NtLockFile(
+    IN  HANDLE FileHandle,
+    IN  HANDLE Event OPTIONAL,
+    IN  PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN  PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN  PLARGE_INTEGER ByteOffset,
+    IN  PLARGE_INTEGER Length,
+    IN  PULONG Key,
+    IN  BOOLEAN FailImmediatedly,
+    IN  BOOLEAN ExclusiveLock
+);
+
+NTSTATUS 
+STDCALL
+ZwLockFile(
+    IN  HANDLE FileHandle,
+    IN  HANDLE Event OPTIONAL,
+    IN  PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN  PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN  PLARGE_INTEGER ByteOffset,
+    IN  PLARGE_INTEGER Length,
+    IN  PULONG Key,
+    IN  BOOLEAN FailImmediatedly,
+    IN  BOOLEAN ExclusiveLock
+);
+
+NTSTATUS
+STDCALL
+NtMakePermanentObject(
+    IN HANDLE Object
+);
+
+NTSTATUS
+STDCALL
+ZwMakePermanentObject(
+    IN HANDLE Object
+);
+
+NTSTATUS
+STDCALL
+NtMakeTemporaryObject(
+    IN HANDLE Handle 
+);
+
+NTSTATUS
+STDCALL
+ZwMakeTemporaryObject(
+    IN HANDLE Handle 
+);
+
+NTSTATUS 
+STDCALL
+NtMapViewOfSection(
+    IN HANDLE SectionHandle,
+    IN HANDLE ProcessHandle,
+    IN OUT PVOID *BaseAddress,
+    IN ULONG ZeroBits,
+    IN ULONG CommitSize,
+    IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
+    IN OUT PULONG ViewSize,
+    IN SECTION_INHERIT InheritDisposition,
+    IN ULONG AllocationType,
+    IN ULONG AccessProtection
+);
+
+NTSTATUS
+STDCALL
+ZwMapViewOfSection(
+    IN HANDLE SectionHandle,
+    IN HANDLE ProcessHandle,
+    IN OUT PVOID *BaseAddress,
+    IN ULONG ZeroBits,
+    IN ULONG CommitSize,
+    IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
+    IN OUT PULONG ViewSize,
+    IN SECTION_INHERIT InheritDisposition,
+    IN ULONG AllocationType,
+    IN ULONG AccessProtection
+);
+
+NTSTATUS
+STDCALL
+NtNotifyChangeDirectoryFile(
+    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 BufferSize,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN WatchTree
+);
+
+NTSTATUS
+STDCALL
+ZwNotifyChangeDirectoryFile(
+    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 BufferSize,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN WatchTree
+);
+
+NTSTATUS
+STDCALL
+NtNotifyChangeKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE Event,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN Asynchroneous, 
+    OUT PVOID ChangeBuffer,
+    IN ULONG Length,
+    IN BOOLEAN WatchSubtree
+);
+
+NTSTATUS
+STDCALL
+ZwNotifyChangeKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE Event,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN Asynchroneous, 
+    OUT PVOID ChangeBuffer,
+    IN ULONG Length,
+    IN BOOLEAN WatchSubtree
+);
+
+NTSTATUS
+STDCALL
+NtOpenDirectoryObject(
+    OUT PHANDLE FileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenDirectoryObject(
+    OUT PHANDLE FileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenFile(
+    OUT PHANDLE FileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG ShareAccess,
+    IN ULONG OpenOptions
+);
+
+NTSTATUS
+STDCALL
+ZwOpenFile(
+    OUT PHANDLE FileHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG ShareAccess,
+    IN ULONG OpenOptions
+);
+
+NTSTATUS
+STDCALL
+NtOpenIoCompletion(
+    OUT PHANDLE CompetionPort,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenIoCompletion(
+    OUT PHANDLE CompetionPort,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS 
+STDCALL 
+NtOpenJobObject(
+    PHANDLE JobHandle, 
+    ACCESS_MASK DesiredAccess,
+    POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS 
+STDCALL 
+ZwOpenJobObject(
+    PHANDLE JobHandle, 
+    ACCESS_MASK DesiredAccess,
+    POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS 
+STDCALL
+NtOpenProcess(
+    OUT PHANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PCLIENT_ID ClientId
+);
+
+NTSTATUS 
+STDCALL
+ZwOpenProcess(
+    OUT PHANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PCLIENT_ID ClientId
+); 
+
+NTSTATUS
+STDCALL
+NtOpenProcessToken(
+    IN HANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+ZwOpenProcessToken(
+    IN HANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+NtOpenProcessTokenEx(
+    IN HANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN ULONG HandleAttributes,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+ZwOpenProcessTokenEx(
+    IN HANDLE ProcessHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN ULONG HandleAttributes,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+NtOpenSection(
+    OUT PHANDLE SectionHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenSection(
+    OUT PHANDLE SectionHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenSemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAcces,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenSemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAcces,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenSymbolicLinkObject(
+    OUT PHANDLE SymbolicLinkHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwOpenSymbolicLinkObject(
+    OUT PHANDLE SymbolicLinkHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+NtOpenThread(
+    OUT PHANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PCLIENT_ID ClientId
+);
+
+NTSTATUS
+STDCALL
+ZwOpenThread(
+    OUT PHANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN PCLIENT_ID ClientId
+);
+
+NTSTATUS
+STDCALL
+NtOpenThreadToken(
+    IN HANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN OpenAsSelf,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+ZwOpenThreadToken(
+    IN HANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN OpenAsSelf,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+NtOpenThreadTokenEx(
+    IN HANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN OpenAsSelf,
+    IN ULONG HandleAttributes,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+ZwOpenThreadTokenEx(
+    IN HANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN OpenAsSelf,
+    IN ULONG HandleAttributes,
+    OUT PHANDLE TokenHandle
+);
+
+NTSTATUS
+STDCALL
+NtOpenTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+NTSTATUS
+STDCALL
+ZwOpenTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSTATUS 
+STDCALL 
+NtPowerInformation(
+    POWER_INFORMATION_LEVEL PowerInformationLevel,
+    PVOID InputBuffer, 
+    ULONG InputBufferLength,
+    PVOID OutputBuffer,
+    ULONG OutputBufferLength
+);
+
+NTSTATUS 
+STDCALL 
+ZwPowerInformation(
+    POWER_INFORMATION_LEVEL PowerInformationLevel,
+    PVOID InputBuffer, 
+    ULONG InputBufferLength,
+    PVOID OutputBuffer,
+    ULONG OutputBufferLength
+);
+
+NTSTATUS
+STDCALL
+NtPrivilegeCheck(
+    IN HANDLE ClientToken,
+    IN PPRIVILEGE_SET RequiredPrivileges,
+    IN PBOOLEAN Result
+);
+
+NTSTATUS
+STDCALL
+ZwPrivilegeCheck(
+    IN HANDLE ClientToken,
+    IN PPRIVILEGE_SET RequiredPrivileges,
+    IN PBOOLEAN Result
+);
+
+NTSTATUS
+STDCALL
+NtPrivilegedServiceAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PUNICODE_STRING ServiceName,
+    IN HANDLE ClientToken,
+    IN PPRIVILEGE_SET Privileges,
+    IN BOOLEAN AccessGranted
+);
+
+NTSTATUS
+STDCALL
+ZwPrivilegedServiceAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,    
+    IN PUNICODE_STRING ServiceName,    
+    IN HANDLE ClientToken,
+    IN PPRIVILEGE_SET Privileges,    
+    IN BOOLEAN AccessGranted     
+);    
+
+NTSTATUS
+STDCALL
+NtPrivilegeObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN HANDLE ClientToken,
+    IN ULONG DesiredAccess,
+    IN PPRIVILEGE_SET Privileges,
+    IN BOOLEAN AccessGranted
+);
+
+NTSTATUS
+STDCALL
+ZwPrivilegeObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN HANDLE ClientToken,
+    IN ULONG DesiredAccess,
+    IN PPRIVILEGE_SET Privileges,
+    IN BOOLEAN AccessGranted
+);
+
+NTSTATUS
+STDCALL
+NtPulseEvent(
+    IN HANDLE EventHandle,
+    IN PLONG PulseCount OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwPulseEvent(
+    IN HANDLE EventHandle,
+    IN PLONG PulseCount OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtQueryAttributesFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PFILE_BASIC_INFORMATION FileInformation
+);
+
+NTSTATUS
+STDCALL
+ZwQueryAttributesFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PFILE_BASIC_INFORMATION FileInformation
+);
+
+
+NTSTATUS
+STDCALL
+NtQueryBootEntryOrder(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+ZwQueryBootEntryOrder(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+NtQueryBootOptions(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+ZwQueryBootOptions(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+NTSTATUS
+STDCALL
+NtQueryDefaultLocale(
+    IN BOOLEAN UserProfile,
+    OUT PLCID DefaultLocaleId
+);
+
+NTSTATUS
+STDCALL
+ZwQueryDefaultLocale(
+    IN BOOLEAN UserProfile,
+    OUT PLCID DefaultLocaleId
+);
+
+NTSTATUS 
+STDCALL 
+NtQueryDefaultUILanguage(
+    PLANGID LanguageId
+);
+
+NTSTATUS 
+STDCALL 
+ZwQueryDefaultUILanguage(
+    PLANGID LanguageId
+);
+
+NTSTATUS
+STDCALL
+NtQueryDirectoryFile(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID FileInformation,
+    IN ULONG Length,
+    IN FILE_INFORMATION_CLASS FileInformationClass,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PUNICODE_STRING FileName OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+NTSTATUS
+STDCALL
+ZwQueryDirectoryFile(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID FileInformation,
+    IN ULONG Length,
+    IN FILE_INFORMATION_CLASS FileInformationClass,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PUNICODE_STRING FileName OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+NTSTATUS
+STDCALL
+NtQueryEaFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG Length,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PVOID EaList OPTIONAL,
+    IN ULONG EaListLength,
+    IN PULONG EaIndex OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+NTSTATUS
+STDCALL
+ZwQueryEaFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG Length,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PVOID EaList OPTIONAL,
+    IN ULONG EaListLength,
+    IN PULONG EaIndex OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+NTSTATUS
+STDCALL
+NtQueryEvent(
+    IN HANDLE EventHandle,
+    IN EVENT_INFORMATION_CLASS EventInformationClass,
+    OUT PVOID EventInformation,
+    IN ULONG EventInformationLength,
+    OUT PULONG ReturnLength
+);
+NTSTATUS
+STDCALL
+ZwQueryEvent(
+    IN HANDLE EventHandle,
+    IN EVENT_INFORMATION_CLASS EventInformationClass,
+    OUT PVOID EventInformation,
+    IN ULONG EventInformationLength,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryFullAttributesFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
+);
+
+NTSTATUS 
+STDCALL
+ZwQueryFullAttributesFile(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation
+);
+
+NTSTATUS
+STDCALL
+NtQueryInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID FileInformation,
+    IN ULONG Length,
+    IN FILE_INFORMATION_CLASS FileInformationClass
+);
+
+NTSTATUS
+STDCALL
+ZwQueryInformationFile(
+    HANDLE FileHandle,
+    PIO_STATUS_BLOCK IoStatusBlock,
+    PVOID FileInformation,
+    ULONG Length,
+    FILE_INFORMATION_CLASS FileInformationClass
+);
+
+NTSTATUS 
+STDCALL 
+NtQueryInformationJobObject(
+    HANDLE JobHandle,
+    JOBOBJECTINFOCLASS JobInformationClass, 
+    PVOID JobInformation,
+    ULONG JobInformationLength, 
+    PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL 
+ZwQueryInformationJobObject(
+    HANDLE JobHandle,
+    JOBOBJECTINFOCLASS JobInformationClass, 
+    PVOID JobInformation,
+    ULONG JobInformationLength, 
+    PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL
+NtQueryInformationPort(
+    HANDLE PortHandle,
+    CINT PortInformationClass,
+    PVOID PortInformation,
+    ULONG PortInformationLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL
+ZwQueryInformationPort(
+    HANDLE PortHandle,
+    CINT PortInformationClass,
+    PVOID PortInformation,
+    ULONG PortInformationLength,
+    PULONG ReturnLength
+);
+
+#ifndef _NTDDK_
+NTSTATUS
+STDCALL
+NtQueryInformationProcess(
+    IN HANDLE  ProcessHandle,
+    IN PROCESSINFOCLASS  ProcessInformationClass,
+    OUT PVOID  ProcessInformation,
+    IN ULONG  ProcessInformationLength,
+    OUT PULONG  ReturnLength OPTIONAL
+);
+NTSTATUS
+STDCALL
+ZwQueryInformationProcess(
+    IN HANDLE  ProcessHandle,
+    IN PROCESSINFOCLASS  ProcessInformationClass,
+    OUT PVOID  ProcessInformation,
+    IN ULONG  ProcessInformationLength,
+    OUT PULONG  ReturnLength OPTIONAL
+);
+#endif
+
+NTSTATUS
+STDCALL
+NtQueryInformationThread(
+    IN HANDLE ThreadHandle,
+    IN THREADINFOCLASS ThreadInformationClass,
+    OUT PVOID ThreadInformation,
+    IN ULONG ThreadInformationLength,
+    OUT PULONG ReturnLength 
+);
+
+NTSTATUS 
+STDCALL 
+ZwQueryInformationThread(
+    IN HANDLE ThreadHandle,
+    IN THREADINFOCLASS ThreadInformationClass,
+    OUT PVOID ThreadInformation,
+    IN ULONG ThreadInformationLength, 
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryInformationToken(
+    IN HANDLE TokenHandle,
+    IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+    OUT PVOID TokenInformation,
+    IN ULONG TokenInformationLength,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ZwQueryInformationToken(
+    IN HANDLE TokenHandle,
+    IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+    OUT PVOID TokenInformation,
+    IN ULONG TokenInformationLength,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL 
+NtQueryInstallUILanguage(
+    PLANGID LanguageId
+);
+
+NTSTATUS 
+STDCALL 
+ZwQueryInstallUILanguage(
+    PLANGID LanguageId
+);
+
+NTSTATUS
+STDCALL
+NtQueryIoCompletion(
+    IN  HANDLE IoCompletionHandle,
+    IN  IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+    OUT PVOID IoCompletionInformation,
+    IN  ULONG IoCompletionInformationLength,
+    OUT PULONG ResultLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwQueryIoCompletion(
+    IN  HANDLE IoCompletionHandle,
+    IN  IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass,
+    OUT PVOID IoCompletionInformation,
+    IN  ULONG IoCompletionInformationLength,
+    OUT PULONG ResultLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtQueryKey(
+    IN HANDLE KeyHandle,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwQueryKey(
+    IN HANDLE KeyHandle,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryQuotaInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG Length,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PVOID SidList OPTIONAL,
+    IN ULONG SidListLength,
+    IN PSID StartSid OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+
+NTSTATUS
+STDCALL
+ZwQueryQuotaInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG Length,
+    IN BOOLEAN ReturnSingleEntry,
+    IN PVOID SidList OPTIONAL,
+    IN ULONG SidListLength,
+    IN PSID StartSid OPTIONAL,
+    IN BOOLEAN RestartScan
+);
+
+NTSTATUS
+STDCALL
+NtQueryMultipleValueKey(
+    IN HANDLE KeyHandle,
+    IN OUT PKEY_VALUE_ENTRY ValueList,
+    IN ULONG NumberOfValues,
+    OUT PVOID Buffer,
+    IN OUT PULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ZwQueryMultipleValueKey(
+    IN HANDLE KeyHandle,
+    IN OUT PKEY_VALUE_ENTRY ValueList,
+    IN ULONG NumberOfValues,
+    OUT PVOID Buffer,
+    IN OUT PULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryMutant(
+    IN HANDLE MutantHandle,
+    IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+    OUT PVOID MutantInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwQueryMutant(
+    IN HANDLE MutantHandle,
+    IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+    OUT PVOID MutantInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryPerformanceCounter(
+    IN PLARGE_INTEGER Counter,
+    IN PLARGE_INTEGER Frequency
+);
+
+NTSTATUS
+STDCALL
+ZwQueryPerformanceCounter(
+    IN PLARGE_INTEGER Counter,
+    IN PLARGE_INTEGER Frequency
+);
+
+NTSTATUS
+STDCALL
+NtQuerySemaphore(
+    IN  HANDLE SemaphoreHandle,
+    IN  SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+    OUT PVOID SemaphoreInformation,
+    IN  ULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySemaphore(
+    IN  HANDLE SemaphoreHandle,
+    IN  SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+    OUT PVOID SemaphoreInformation,
+    IN  ULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtQuerySymbolicLinkObject(
+    IN HANDLE SymLinkObjHandle,
+    OUT PUNICODE_STRING LinkTarget,
+    OUT PULONG DataWritten OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySymbolicLinkObject(
+    IN HANDLE SymLinkObjHandle,
+    OUT PUNICODE_STRING LinkName,
+    OUT PULONG DataWritten OPTIONAL
+); 
+
+NTSTATUS
+STDCALL
+NtQuerySystemEnvironmentValue(
+    IN PUNICODE_STRING Name,
+    OUT PVOID Value,
+    ULONG Length,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySystemEnvironmentValue(
+    IN PUNICODE_STRING Name,
+    OUT PVOID Value,
+    ULONG Length,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtQuerySystemInformation(
+    IN  SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    OUT PVOID SystemInformation,
+    IN  ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySystemInformation(
+    IN  SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    OUT PVOID SystemInformation,
+    IN  ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtQuerySystemTime (
+    OUT PLARGE_INTEGER CurrentTime
+);
+     
+NTSTATUS
+STDCALL
+NtQueryTimer(
+    IN HANDLE TimerHandle,
+    IN TIMER_INFORMATION_CLASS TimerInformationClass,
+    OUT PVOID TimerInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+NTSTATUS
+STDCALL
+ZwQueryTimer(
+    IN HANDLE TimerHandle,
+    IN TIMER_INFORMATION_CLASS TimerInformationClass,
+    OUT PVOID TimerInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL 
+NtQueryTimerResolution ( 
+    OUT PULONG MinimumResolution,
+    OUT PULONG MaximumResolution, 
+    OUT PULONG ActualResolution 
+); 
+
+NTSTATUS
+STDCALL 
+ZwQueryTimerResolution ( 
+    OUT PULONG MinimumResolution,
+    OUT PULONG MaximumResolution, 
+    OUT PULONG ActualResolution 
+); 
+     
+NTSTATUS
+STDCALL
+NtQueryValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwQueryValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryVolumeInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID FsInformation,
+    IN ULONG Length,
+    IN FS_INFORMATION_CLASS FsInformationClass 
+);
+
+NTSTATUS
+STDCALL
+ZwQueryVolumeInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID FsInformation,
+    IN ULONG Length,
+    IN FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSTATUS
+STDCALL
+NtQueueApcThread(
+    HANDLE ThreadHandle,
+    PKNORMAL_ROUTINE ApcRoutine,
+    PVOID NormalContext,
+    PVOID SystemArgument1,
+    PVOID SystemArgument2
+);
+
+NTSTATUS
+STDCALL
+ZwQueueApcThread(
+    HANDLE ThreadHandle,
+    PKNORMAL_ROUTINE ApcRoutine,
+    PVOID NormalContext,
+    PVOID SystemArgument1,
+    PVOID SystemArgument2
+);
+
+NTSTATUS
+STDCALL
+NtRaiseException(
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT Context,
+    IN BOOLEAN SearchFrames
+);
+
+NTSTATUS
+STDCALL
+ZwRaiseException(
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT Context,
+    IN BOOLEAN SearchFrames
+);
+
+NTSTATUS
+STDCALL
+NtReadFile(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL,
+    IN PVOID UserApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG BufferLength,
+    IN PLARGE_INTEGER ByteOffset OPTIONAL,
+    IN PULONG Key OPTIONAL    
+);
+
+NTSTATUS
+STDCALL
+ZwReadFile(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL,
+    IN PVOID UserApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    OUT PVOID Buffer,
+    IN ULONG BufferLength,
+    IN PLARGE_INTEGER ByteOffset OPTIONAL,
+    IN PULONG Key OPTIONAL    
+);
+
+NTSTATUS
+STDCALL
+NtReadFileScatter(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL,
+    IN  PVOID UserApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK UserIoStatusBlock,
+    IN FILE_SEGMENT_ELEMENT BufferDescription[],
+    IN ULONG BufferLength,
+    IN PLARGE_INTEGER ByteOffset,
+    IN PULONG Key OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwReadFileScatter(
+    IN HANDLE FileHandle,
+    IN HANDLE Event OPTIONAL,
+    IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL,
+    IN  PVOID UserApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK UserIoStatusBlock,
+    IN FILE_SEGMENT_ELEMENT BufferDescription[],
+    IN ULONG BufferLength,
+    IN PLARGE_INTEGER ByteOffset,
+    IN PULONG Key OPTIONAL
+);
+
+NTSTATUS 
+STDCALL
+NtReadRequestData(
+    HANDLE PortHandle,
+    PLPC_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL
+ZwReadRequestData(
+    HANDLE PortHandle,
+    PLPC_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtReadVirtualMemory( 
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    OUT PVOID Buffer,
+    IN ULONG  NumberOfBytesToRead,
+    OUT PULONG NumberOfBytesRead
+); 
+NTSTATUS
+STDCALL
+ZwReadVirtualMemory( 
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    OUT PVOID Buffer,
+    IN ULONG  NumberOfBytesToRead,
+    OUT PULONG NumberOfBytesRead
+);     
+
+NTSTATUS
+STDCALL    
+NtRegisterThreadTerminatePort(
+    HANDLE TerminationPort
+);
+
+NTSTATUS
+STDCALL    
+ZwRegisterThreadTerminatePort(
+    HANDLE TerminationPort
+);
+
+NTSTATUS
+STDCALL    
+NtReleaseMutant(
+    IN HANDLE MutantHandle,
+    IN PLONG ReleaseCount OPTIONAL
+);
+
+NTSTATUS
+STDCALL    
+ZwReleaseMutant(
+    IN HANDLE MutantHandle,
+    IN PLONG ReleaseCount OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtReleaseSemaphore(
+    IN  HANDLE SemaphoreHandle,
+    IN  LONG ReleaseCount,
+    OUT PLONG PreviousCount
+);
+
+NTSTATUS
+STDCALL
+ZwReleaseSemaphore(
+    IN  HANDLE SemaphoreHandle,
+    IN  LONG ReleaseCount,
+    OUT PLONG PreviousCount
+);
+
+NTSTATUS
+STDCALL
+NtRemoveIoCompletion(
+    IN  HANDLE IoCompletionHandle,
+    OUT PVOID *CompletionKey,
+    OUT PVOID *CompletionContext,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN  PLARGE_INTEGER Timeout OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwRemoveIoCompletion(
+    IN  HANDLE IoCompletionHandle,
+    OUT PVOID *CompletionKey,
+    OUT PVOID *CompletionContext,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN  PLARGE_INTEGER Timeout OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtReplaceKey(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN HANDLE Key,
+    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes
+);
+NTSTATUS
+STDCALL
+ZwReplaceKey(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN HANDLE Key,
+    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes
+);
+
+NTSTATUS 
+STDCALL
+NtReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcReply
+);
+
+NTSTATUS 
+STDCALL
+ZwReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcReply
+);
+
+NTSTATUS 
+STDCALL
+NtReplyWaitReceivePort(
+    HANDLE PortHandle,
+    PULONG PortId,
+    PLPC_MESSAGE MessageReply,
+    PLPC_MESSAGE MessageRequest
+);
+
+NTSTATUS 
+STDCALL
+ZwReplyWaitReceivePort(
+    HANDLE PortHandle,
+    PULONG PortId,
+    PLPC_MESSAGE MessageReply,
+    PLPC_MESSAGE MessageRequest
+);
+
+NTSTATUS 
+STDCALL
+NtReplyWaitReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE ReplyMessage
+);
+
+NTSTATUS 
+STDCALL
+ZwReplyWaitReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE ReplyMessage
+);
+
+NTSTATUS 
+STDCALL
+NtRequestPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcMessage);
+
+NTSTATUS 
+STDCALL
+ZwRequestPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcMessage
+);
+
+NTSTATUS
+STDCALL
+NtRequestWaitReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcReply,
+    PLPC_MESSAGE LpcRequest
+);
+
+NTSTATUS 
+STDCALL
+ZwRequestWaitReplyPort(
+    HANDLE PortHandle,
+    PLPC_MESSAGE LpcReply,
+    PLPC_MESSAGE LpcRequest
+);
+
+NTSTATUS
+STDCALL
+NtResetEvent(
+    HANDLE EventHandle,
+    PLONG NumberOfWaitingThreads OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwResetEvent(
+    HANDLE EventHandle,
+    PLONG NumberOfWaitingThreads OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtRestoreKey(
+    HANDLE KeyHandle,
+    HANDLE FileHandle,
+    ULONG RestoreFlags
+);
+
+NTSTATUS
+STDCALL
+ZwRestoreKey(
+    HANDLE KeyHandle,
+    HANDLE FileHandle,
+    ULONG RestoreFlags
+);
+
+NTSTATUS
+STDCALL
+NtResumeThread(
+    IN HANDLE ThreadHandle,
+    OUT PULONG SuspendCount
+);
+
+NTSTATUS
+STDCALL
+ZwResumeThread(
+    IN HANDLE ThreadHandle,
+    OUT PULONG SuspendCount
+);
+
+NTSTATUS
+STDCALL
+NtSaveKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle
+);
+NTSTATUS
+STDCALL
+ZwSaveKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle
+);
+
+NTSTATUS
+STDCALL
+NtSaveKeyEx(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG Flags
+);
+
+NTSTATUS
+STDCALL
+ZwSaveKeyEx(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG Flags
+);
+
+NTSTATUS
+STDCALL
+NtSetBootEntryOrder(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+ZwSetBootEntryOrder(
+    IN ULONG Unknown1,
+    IN ULONG Unknown2
+);
+
+NTSTATUS 
+STDCALL 
+NtSetBootOptions(
+    ULONG Unknown1, 
+    ULONG Unknown2
+);
+
+NTSTATUS 
+STDCALL 
+ZwSetBootOptions(
+    ULONG Unknown1, 
+    ULONG Unknown2
+);
+
+NTSTATUS
+STDCALL
+NtSetContextThread(
+    IN HANDLE ThreadHandle,
+    IN PCONTEXT Context
+);
+NTSTATUS
+STDCALL
+ZwSetContextThread(
+    IN HANDLE ThreadHandle,
+    IN PCONTEXT Context
+);
+
+NTSTATUS
+STDCALL
+NtSetDefaultLocale(
+    IN BOOLEAN UserProfile,
+    IN LCID DefaultLocaleId
+);
+
+NTSTATUS
+STDCALL
+ZwSetDefaultLocale(
+    IN BOOLEAN UserProfile,
+    IN LCID DefaultLocaleId
+);
+
+NTSTATUS 
+STDCALL 
+NtSetDefaultUILanguage(
+    LANGID LanguageId
+);
+
+NTSTATUS 
+STDCALL 
+ZwSetDefaultUILanguage(
+    LANGID LanguageId
+);
+NTSTATUS
+STDCALL
+NtSetDefaultHardErrorPort(
+    IN HANDLE PortHandle
+);
+NTSTATUS
+STDCALL
+ZwSetDefaultHardErrorPort(
+    IN HANDLE PortHandle
+);
+
+NTSTATUS
+STDCALL
+NtSetEaFile(
+    IN HANDLE FileHandle,
+    IN PIO_STATUS_BLOCK IoStatusBlock,
+    PVOID EaBuffer,
+    ULONG EaBufferSize
+);
+
+NTSTATUS
+STDCALL
+ZwSetEaFile(
+    IN HANDLE FileHandle,
+    IN PIO_STATUS_BLOCK IoStatusBlock,
+    PVOID EaBuffer,
+    ULONG EaBufferSize
+);
+
+NTSTATUS
+STDCALL
+NtSetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG PreviousState  OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwSetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG PreviousState  OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtSetHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS
+STDCALL
+ZwSetHighEventPair(
+    IN HANDLE EventPairHandle
+);
+NTSTATUS
+STDCALL
+NtSetHighWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+NTSTATUS
+STDCALL
+ZwSetHighWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationFile(
+    IN HANDLE FileHandle,
+    IN PIO_STATUS_BLOCK IoStatusBlock,
+    IN PVOID FileInformation,
+    IN ULONG Length,
+    IN FILE_INFORMATION_CLASS FileInformationClass
+);
+
+NTSTATUS
+STDCALL
+ZwSetInformationFile(
+    IN HANDLE FileHandle,
+    IN PIO_STATUS_BLOCK IoStatusBlock,
+    IN PVOID FileInformation,
+    IN ULONG Length,
+    IN FILE_INFORMATION_CLASS FileInformationClass
+);
+
+NTSTATUS 
+STDCALL 
+NtSetInformationJobObject(
+    HANDLE JobHandle,
+    JOBOBJECTINFOCLASS JobInformationClass,
+    PVOID JobInformation, 
+    ULONG JobInformationLength
+);
+
+NTSTATUS 
+STDCALL 
+ZwSetInformationJobObject(
+    HANDLE JobHandle,
+    JOBOBJECTINFOCLASS JobInformationClass,
+    PVOID JobInformation, 
+    ULONG JobInformationLength
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationThread(
+    IN HANDLE ThreadHandle,
+    IN THREADINFOCLASS ThreadInformationClass,
+    IN PVOID ThreadInformation,
+    IN ULONG ThreadInformationLength
+);
+NTSTATUS
+STDCALL
+ZwSetInformationThread(
+    IN HANDLE ThreadHandle,
+    IN THREADINFOCLASS ThreadInformationClass,
+    IN PVOID ThreadInformation,
+    IN ULONG ThreadInformationLength
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationToken(
+    IN HANDLE TokenHandle,            
+    IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+    OUT PVOID TokenInformation,       
+    IN ULONG TokenInformationLength   
+);
+
+NTSTATUS
+STDCALL
+ZwSetInformationToken(
+    IN HANDLE TokenHandle,            
+    IN TOKEN_INFORMATION_CLASS TokenInformationClass,
+    OUT PVOID TokenInformation,       
+    IN ULONG TokenInformationLength   
+);
+
+NTSTATUS
+STDCALL
+NtSetIoCompletion(
+    IN HANDLE IoCompletionPortHandle,
+    IN PVOID CompletionKey,
+    IN PVOID CompletionContext,
+    IN NTSTATUS CompletionStatus,
+    IN ULONG CompletionInformation
+);
+
+NTSTATUS
+STDCALL
+ZwSetIoCompletion(
+    IN HANDLE IoCompletionPortHandle,
+    IN PVOID CompletionKey,
+    IN PVOID CompletionContext,
+    IN NTSTATUS CompletionStatus,
+    IN ULONG CompletionInformation
+);
+
+NTSTATUS 
+STDCALL
+NtSetIntervalProfile(
+    ULONG Interval,
+    KPROFILE_SOURCE ClockSource
+);
+
+NTSTATUS 
+STDCALL
+ZwSetIntervalProfile(
+    ULONG Interval,
+    KPROFILE_SOURCE ClockSource
+);
+
+NTSTATUS
+STDCALL
+NtSetLowEventPair(
+    HANDLE EventPair
+);
+
+NTSTATUS
+STDCALL
+ZwSetLowEventPair(
+    HANDLE EventPair
+);
+
+NTSTATUS
+STDCALL
+NtSetLowWaitHighEventPair(
+    HANDLE EventPair
+);
+
+NTSTATUS
+STDCALL
+ZwSetLowWaitHighEventPair(
+    HANDLE EventPair
+);
+
+NTSTATUS 
+STDCALL 
+NtSetQuotaInformationFile(
+    HANDLE FileHandle,
+    PIO_STATUS_BLOCK IoStatusBlock, 
+    PFILE_USER_QUOTA_INFORMATION Buffer,
+    ULONG BufferLength
+); 
+
+NTSTATUS 
+STDCALL 
+ZwSetQuotaInformationFile(
+    HANDLE FileHandle,
+    PIO_STATUS_BLOCK IoStatusBlock, 
+    PFILE_USER_QUOTA_INFORMATION Buffer,
+    ULONG BufferLength
+); 
+
+NTSTATUS
+STDCALL
+NtSetSecurityObject(
+    IN HANDLE Handle, 
+    IN SECURITY_INFORMATION SecurityInformation, 
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor 
+); 
+
+NTSTATUS
+STDCALL
+ZwSetSecurityObject(
+    IN HANDLE Handle, 
+    IN SECURITY_INFORMATION SecurityInformation, 
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor 
+); 
+
+NTSTATUS
+STDCALL
+NtSetSystemEnvironmentValue(
+    IN PUNICODE_STRING VariableName,
+    IN PUNICODE_STRING Value
+);
+NTSTATUS
+STDCALL
+ZwSetSystemEnvironmentValue(
+    IN PUNICODE_STRING VariableName,
+    IN PUNICODE_STRING Value
+);
+
+NTSTATUS
+STDCALL
+NtSetSystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    IN PVOID SystemInformation,
+    IN ULONG SystemInformationLength
+);
+
+NTSTATUS
+STDCALL
+ZwSetSystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    IN PVOID SystemInformation,
+    IN ULONG SystemInformationLength
+);
+
+NTSTATUS
+STDCALL
+NtSetSystemTime(
+    IN PLARGE_INTEGER SystemTime,
+    IN PLARGE_INTEGER NewSystemTime OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwSetSystemTime(
+    IN PLARGE_INTEGER SystemTime,
+    IN PLARGE_INTEGER NewSystemTime OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtSetTimerResolution(
+    IN ULONG RequestedResolution,
+    IN BOOLEAN SetOrUnset,
+    OUT PULONG ActualResolution
+);
+
+NTSTATUS
+STDCALL
+ZwSetTimerResolution(
+    IN ULONG RequestedResolution,
+    IN BOOLEAN SetOrUnset,
+    OUT PULONG ActualResolution
+);
+
+NTSTATUS
+STDCALL
+NtSetUuidSeed(
+    IN PUCHAR UuidSeed
+);
+    
+NTSTATUS
+STDCALL
+ZwSetUuidSeed(
+    IN PUCHAR UuidSeed
+);
+
+NTSTATUS
+STDCALL
+NtSetValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN ULONG TitleIndex OPTIONAL,
+    IN ULONG Type,
+    IN PVOID Data,
+    IN ULONG DataSize
+);
+
+NTSTATUS
+STDCALL
+ZwSetValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN ULONG TitleIndex OPTIONAL,
+    IN ULONG Type,
+    IN PVOID Data,
+    IN ULONG DataSize
+);
+
+NTSTATUS
+STDCALL
+NtSetVolumeInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN PVOID FsInformation,
+    IN ULONG Length,
+    IN FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSTATUS
+STDCALL
+ZwSetVolumeInformationFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN PVOID FsInformation,
+    IN ULONG Length,
+    IN FS_INFORMATION_CLASS FsInformationClass
+);
+
+NTSTATUS
+STDCALL
+NtShutdownSystem(
+    IN SHUTDOWN_ACTION Action
+);
+
+NTSTATUS
+STDCALL
+ZwShutdownSystem(
+    IN SHUTDOWN_ACTION Action
+);
+
+NTSTATUS
+STDCALL
+NtSignalAndWaitForSingleObject(
+    IN HANDLE SignalObject,
+    IN HANDLE WaitObject,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+NTSTATUS
+STDCALL
+ZwSignalAndWaitForSingleObject(
+    IN HANDLE SignalObject,
+    IN HANDLE WaitObject,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+NTSTATUS
+STDCALL
+NtStartProfile(
+    HANDLE ProfileHandle
+);
+
+NTSTATUS
+STDCALL
+ZwStartProfile(
+    HANDLE ProfileHandle
+);
+
+NTSTATUS
+STDCALL
+NtStopProfile(
+    HANDLE ProfileHandle
+);
+
+NTSTATUS
+STDCALL
+ZwStopProfile(
+    HANDLE ProfileHandle
+);
+
+NTSTATUS 
+STDCALL 
+NtTerminateProcess(
+    IN HANDLE ProcessHandle,
+    IN NTSTATUS ExitStatus
+);
+
+NTSTATUS 
+STDCALL 
+ZwTerminateProcess(
+    IN HANDLE ProcessHandle,
+    IN NTSTATUS ExitStatus
+);
+
+NTSTATUS 
+STDCALL 
+NtTerminateJobObject(
+    HANDLE JobHandle, 
+    NTSTATUS ExitStatus
+);
+
+NTSTATUS 
+STDCALL 
+ZwTerminateJobObject(
+    HANDLE JobHandle, 
+    NTSTATUS ExitStatus
+);
+
+NTSTATUS
+STDCALL
+NtTraceEvent(
+    IN ULONG TraceHandle,
+    IN ULONG Flags,
+    IN ULONG TraceHeaderLength,
+    IN struct _EVENT_TRACE_HEADER* TraceHeader
+);
+
+NTSTATUS
+STDCALL
+ZwTraceEvent(
+    IN ULONG TraceHandle,
+    IN ULONG Flags,
+    IN ULONG TraceHeaderLength,
+    IN struct _EVENT_TRACE_HEADER* TraceHeader
+);
+
+NTSTATUS 
+STDCALL 
+NtTranslateFilePath(
+    ULONG Unknown1, 
+    ULONG Unknown2,
+    ULONG Unknown3
+);
+
+NTSTATUS 
+STDCALL 
+ZwTranslateFilePath(
+    ULONG Unknown1, 
+    ULONG Unknown2,
+    ULONG Unknown3
+);
+
+NTSTATUS 
+STDCALL
+NtUnloadDriver(
+    IN PUNICODE_STRING DriverServiceName
+);
+
+NTSTATUS 
+STDCALL
+ZwUnloadDriver(
+    IN PUNICODE_STRING DriverServiceName
+);
+
+NTSTATUS
+STDCALL
+NtUnmapViewOfSection(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress
+);
+
+NTSTATUS
+STDCALL
+ZwUnmapViewOfSection(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress
+);
+
+NTSTATUS 
+STDCALL
+NtWriteRequestData(
+    HANDLE PortHandle,
+    PLPC_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS 
+STDCALL
+ZwWriteRequestData(
+    HANDLE PortHandle,
+    PLPC_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL 
+NtWriteVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID  BaseAddress,
+    IN PVOID Buffer,
+    IN ULONG NumberOfBytesToWrite,
+    OUT PULONG NumberOfBytesWritten
+);
+
+NTSTATUS
+STDCALL 
+ZwWriteVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID  BaseAddress,
+    IN PVOID Buffer,
+    IN ULONG NumberOfBytesToWrite,
+    OUT PULONG NumberOfBytesWritten
+);
+
+
+NTSTATUS
+STDCALL
+NtWaitForSingleObject (
+    IN HANDLE Object,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+NTSTATUS
+STDCALL
+ZwWaitForSingleObject (
+    IN HANDLE Object,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+
+NTSTATUS
+STDCALL
+NtWaitHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS
+STDCALL
+ZwWaitHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS
+STDCALL
+NtWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS
+STDCALL
+ZwWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSTATUS 
+STDCALL
+NtUnlockFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN PLARGE_INTEGER ByteOffset,
+    IN PLARGE_INTEGER Lenght,
+    OUT PULONG Key OPTIONAL
+);
+NTSTATUS 
+STDCALL
+ZwUnlockFile(
+    IN HANDLE FileHandle,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN PLARGE_INTEGER ByteOffset,
+    IN PLARGE_INTEGER Lenght,
+    OUT PULONG Key OPTIONAL
+);
+    
+
+NTSTATUS
+STDCALL
+NtWriteFile(
+    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,
+    IN PULONG Key OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+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 ,
+    IN PULONG Key OPTIONAL
+);
+
+NTSTATUS
+STDCALL 
+NtWriteFileGather( 
+    IN HANDLE FileHandle, 
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN FILE_SEGMENT_ELEMENT BufferDescription[], 
+    IN ULONG BufferLength, 
+    IN PLARGE_INTEGER ByteOffset, 
+    IN PULONG Key OPTIONAL
+); 
+
+NTSTATUS
+STDCALL 
+ZwWriteFileGather( 
+    IN HANDLE FileHandle, 
+    IN HANDLE Event OPTIONAL, 
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, 
+    IN PVOID ApcContext OPTIONAL, 
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN FILE_SEGMENT_ELEMENT BufferDescription[], 
+    IN ULONG BufferLength, 
+    IN PLARGE_INTEGER ByteOffset, 
+    IN PULONG Key OPTIONAL
+); 
+
+NTSTATUS 
+STDCALL 
+NtSuspendThread(
+    IN HANDLE ThreadHandle,
+    IN PULONG PreviousSuspendCount 
+);
+
+NTSTATUS 
+STDCALL 
+ZwSuspendThread(
+    IN HANDLE ThreadHandle,
+    IN PULONG PreviousSuspendCount 
+);
+
+NTSTATUS 
+STDCALL 
+NtTerminateThread(
+    IN HANDLE ThreadHandle ,
+    IN NTSTATUS ExitStatus
+);
+NTSTATUS 
+STDCALL 
+ZwTerminateThread(
+    IN HANDLE ThreadHandle ,
+    IN NTSTATUS ExitStatus
+);
+
+NTSTATUS 
+STDCALL 
+NtTestAlert(
+    VOID 
+);
+NTSTATUS 
+STDCALL 
+ZwTestAlert(
+    VOID 
+);
+
+NTSTATUS
+STDCALL 
+NtYieldExecution(
+    VOID
+);
+
+NTSTATUS
+STDCALL 
+ZwYieldExecution(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtPlugPlayControl(
+    DWORD Unknown1,
+    DWORD Unknown2,
+    DWORD Unknown3
+);
+
+NTSTATUS
+STDCALL
+NtGetPlugPlayEvent(
+    ULONG Reserved1,
+    ULONG Reserved2,
+    PVOID Buffer,
+    ULONG BufferLength
+);
+
+NTSTATUS 
+STDCALL 
+NtSetSystemPowerState(
+    IN POWER_ACTION SystemAction,
+    IN SYSTEM_POWER_STATE MinSystemState,
+    IN ULONG Flags
+);
+
+NTSTATUS 
+STDCALL 
+NtSystemDebugControl(
+    DEBUG_CONTROL_CODE ControlCode,
+    PVOID InputBuffer,
+    ULONG InputBufferLength,
+    PVOID OutputBuffer,
+    ULONG OutputBufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+STDCALL
+NtVdmControl(
+    ULONG ControlCode, 
+    PVOID ControlData
+);
+
+NTSTATUS 
+STDCALL
+NtW32Call(
+    IN ULONG RoutineIndex,
+    IN PVOID Argument,
+    IN ULONG ArgumentLength,
+    OUT PVOID* Result OPTIONAL,
+    OUT PULONG ResultLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtCreateChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtListenChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtOpenChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtReplyWaitSendChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtSendWaitReplyChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtSetContextChannel(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtSetLdtEntries(
+    ULONG Selector1,
+    LDT_ENTRY LdtEntry1,
+    ULONG Selector2,
+    LDT_ENTRY LdtEntry2
+);
+
+NTSTATUS
+STDCALL
+NtQueryOleDirectoryFile(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtAccessCheck(
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN HANDLE ClientToken,
+    IN ACCESS_MASK DesiredAcces,
+    IN PGENERIC_MAPPING GenericMapping,
+    OUT PPRIVILEGE_SET PrivilegeSet,
+    OUT PULONG ReturnLength,
+    OUT PACCESS_MASK GrantedAccess,
+    OUT PNTSTATUS AccessStatus
+);
+
+NTSTATUS
+STDCALL
+ZwAccessCheck(
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN HANDLE ClientToken,
+    IN ACCESS_MASK DesiredAcces,
+    IN PGENERIC_MAPPING GenericMapping,
+    OUT PPRIVILEGE_SET PrivilegeSet,
+    OUT PULONG ReturnLength,
+    OUT PACCESS_MASK GrantedAccess,
+    OUT PNTSTATUS AccessStatus
+);
+
+NTSTATUS
+STDCALL
+NtAccessCheckAndAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PHANDLE ObjectHandle,
+    IN PUNICODE_STRING ObjectTypeName,
+    IN PUNICODE_STRING ObjectName,
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN ACCESS_MASK DesiredAccess,
+    IN PGENERIC_MAPPING GenericMapping,
+    IN BOOLEAN ObjectCreation,
+    OUT PACCESS_MASK GrantedAccess,
+    OUT PNTSTATUS AccessStatus,
+    OUT PBOOLEAN GenerateOnClose
+);
+
+NTSTATUS
+STDCALL
+NtCancelTimer(
+    IN HANDLE TimerHandle,
+    OUT PBOOLEAN CurrentState OPTIONAL
+);
+
+
+NTSTATUS
+STDCALL
+NtContinue(
+    IN PCONTEXT Context,
+    IN BOOLEAN TestAlert
+);
+
+NTSTATUS
+STDCALL
+NtCreatePagingFile(
+    IN PUNICODE_STRING FileName,
+    IN PLARGE_INTEGER InitialSize,
+    IN PLARGE_INTEGER MaxiumSize,
+    IN ULONG Reserved
+);
+
+NTSTATUS 
+STDCALL
+NtCreateProfile(
+    OUT PHANDLE ProfileHandle, 
+    IN HANDLE ProcessHandle,
+    IN PVOID ImageBase, 
+    IN ULONG ImageSize, 
+    IN ULONG Granularity,
+    OUT PVOID Buffer, 
+    IN ULONG ProfilingSize,
+    IN KPROFILE_SOURCE Source,
+    IN KAFFINITY ProcessorMask
+);
+
+NTSTATUS
+STDCALL 
+NtCreateThread(
+    OUT PHANDLE ThreadHandle,
+    IN  ACCESS_MASK DesiredAccess,
+    IN  POBJECT_ATTRIBUTES ObjectAttributes    OPTIONAL,
+    IN  HANDLE ProcessHandle,
+    OUT PCLIENT_ID ClientId,
+    IN  PCONTEXT ThreadContext,
+    IN  PINITIAL_TEB UserStack,
+    IN  BOOLEAN CreateSuspended
+);
+
+NTSTATUS
+STDCALL
+NtDelayExecution(
+    IN ULONG Alertable,
+    IN LARGE_INTEGER *Interval
+);
+
+NTSTATUS
+STDCALL
+NtExtendSection(
+    IN HANDLE SectionHandle,
+    IN PLARGE_INTEGER NewMaximumSize
+);
+
+NTSTATUS
+STDCALL
+NtFlushInstructionCache(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    IN UINT NumberOfBytesToFlush
+);
+
+NTSTATUS
+STDCALL
+NtFlushVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    IN ULONG NumberOfBytesToFlush,
+    OUT PULONG NumberOfBytesFlushed OPTIONAL
+);
+
+ULONG
+STDCALL 
+NtGetTickCount(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+NtLoadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+
+NTSTATUS
+STDCALL
+NtLockVirtualMemory(
+    HANDLE ProcessHandle,
+    PVOID BaseAddress,
+    ULONG NumberOfBytesToLock,
+    PULONG NumberOfBytesLocked
+);
+
+NTSTATUS
+STDCALL
+NtOpenObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN PUNICODE_STRING ObjectTypeName,
+    IN PUNICODE_STRING ObjectName,
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN HANDLE ClientToken,
+    IN ULONG DesiredAccess,
+    IN ULONG GrantedAccess,
+    IN PPRIVILEGE_SET Privileges,
+    IN BOOLEAN ObjectCreation,
+    IN BOOLEAN AccessGranted,
+    OUT PBOOLEAN GenerateOnClose
+);
+
+NTSTATUS
+STDCALL
+NtProtectVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID *BaseAddress,
+    IN ULONG *NumberOfBytesToProtect,
+    IN ULONG NewAccessProtection,
+    OUT PULONG OldAccessProtection
+);
+
+NTSTATUS
+STDCALL
+NtQueryDirectoryObject(
+    IN     HANDLE DirectoryHandle,
+    OUT    PVOID Buffer,
+    IN     ULONG BufferLength,
+    IN     BOOLEAN ReturnSingleEntry,
+    IN     BOOLEAN RestartScan,
+    IN OUT PULONG Context,
+    OUT    PULONG ReturnLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtQueryIntervalProfile(
+    IN  KPROFILE_SOURCE ProfileSource,
+    OUT PULONG Interval
+);
+
+NTSTATUS
+STDCALL
+NtQuerySection(
+    IN HANDLE SectionHandle,
+    IN CINT SectionInformationClass,
+    OUT PVOID SectionInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtQueryVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID Address,
+    IN IN CINT VirtualMemoryInformationClass,
+    OUT PVOID VirtualMemoryInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtRaiseHardError(
+    IN NTSTATUS Status,
+    ULONG Unknown2,
+    ULONG Unknown3,
+    ULONG Unknown4,
+    ULONG Unknown5,
+    ULONG Unknown6
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationKey(
+    IN HANDLE KeyHandle,
+    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
+    IN PVOID KeyInformation,
+    IN ULONG KeyInformationLength
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationObject(
+    IN HANDLE ObjectHandle,
+    IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+    IN PVOID ObjectInformation,
+    IN ULONG Length 
+);
+
+NTSTATUS
+STDCALL
+NtSetTimer(
+    IN HANDLE TimerHandle,
+    IN PLARGE_INTEGER DueTime,
+    IN PTIMER_APC_ROUTINE TimerApcRoutine,
+    IN PVOID TimerContext,
+    IN BOOLEAN WakeTimer,
+    IN LONG Period OPTIONAL,
+    OUT PBOOLEAN PreviousState OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtUnloadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+NTSTATUS 
+STDCALL
+NtUnlockVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    IN ULONG  NumberOfBytesToUnlock,
+    OUT PULONG NumberOfBytesUnlocked OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtWaitForMultipleObjects(
+    IN ULONG Count,
+    IN HANDLE Object[],
+    IN WAIT_TYPE WaitType,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+NTSTATUS 
+STDCALL 
+ZwContinue(
+    IN PCONTEXT Context, 
+    IN CINT IrqLevel
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySystemTime (
+    OUT PLARGE_INTEGER CurrentTime
+);
+
+
+NTSTATUS
+STDCALL
+NtDuplicateObject(
+    IN HANDLE SourceProcessHandle,
+    IN HANDLE SourceHandle,
+    IN HANDLE TargetProcessHandle,
+    OUT PHANDLE TargetHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN InheritHandle,
+    IN ULONG Options
+);
+    
+NTSTATUS
+STDCALL
+ZwDuplicateObject(
+    IN HANDLE SourceProcessHandle,
+    IN HANDLE SourceHandle,
+    IN HANDLE TargetProcessHandle,
+    OUT PHANDLE TargetHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN BOOLEAN InheritHandle,
+    IN ULONG Options
+);
+
+NTSTATUS
+STDCALL
+NtAddAtom(
+    IN     PWSTR  AtomName,
+    IN     ULONG AtomNameLength,
+    IN OUT PRTL_ATOM  Atom
+);
+
+NTSTATUS
+STDCALL
+ZwAddAtom(
+    IN     PWSTR  AtomName,
+    IN     ULONG AtomNameLength,
+    IN OUT PRTL_ATOM  Atom
+);
+
+NTSTATUS
+STDCALL
+NtAllocateUuids(
+    PULARGE_INTEGER Time,
+    PULONG Range,
+    PULONG Sequence,
+    PUCHAR Seed
+);
+
+NTSTATUS
+STDCALL
+ZwAllocateUuids(
+    PULARGE_INTEGER Time,
+    PULONG Range,
+    PULONG Sequence,
+    PUCHAR Seed
+);
+
+NTSTATUS
+STDCALL
+ZwCreatePagingFile(
+    IN PUNICODE_STRING FileName,
+    IN PLARGE_INTEGER InitialSize,
+    IN PLARGE_INTEGER MaxiumSize,
+    IN ULONG Reserved
+);
+
+NTSTATUS
+STDCALL 
+ZwCreateThread(
+    OUT PHANDLE ThreadHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN HANDLE ProcessHandle,
+    OUT PCLIENT_ID ClientId,
+    IN PCONTEXT ThreadContext,
+    IN PINITIAL_TEB UserStack,
+    IN BOOLEAN CreateSuspended
+);
+
+NTSTATUS 
+STDCALL
+NtDuplicateToken(
+    IN HANDLE ExistingTokenHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN BOOLEAN EffectiveOnly,
+    IN TOKEN_TYPE TokenType,
+    OUT PHANDLE NewTokenHandle
+);
+
+NTSTATUS
+STDCALL
+NtFindAtom(
+    IN  PWSTR AtomName,
+    IN  ULONG AtomNameLength,
+    OUT PRTL_ATOM Atom OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwFindAtom(
+    IN  PWSTR AtomName,
+    IN  ULONG AtomNameLength,
+    OUT PRTL_ATOM Atom OPTIONAL
+);
+
+ULONG
+STDCALL
+ZwGetTickCount(
+    VOID
+);
+
+NTSTATUS
+STDCALL
+ZwLoadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+NTSTATUS
+STDCALL
+ZwLockVirtualMemory(
+    HANDLE ProcessHandle,
+    PVOID BaseAddress,
+    ULONG NumberOfBytesToLock,
+    PULONG NumberOfBytesLocked
+);
+
+NTSTATUS
+STDCALL
+ZwOpenObjectAuditAlarm(
+    IN PUNICODE_STRING SubsystemName,
+    IN PVOID HandleId,
+    IN PUNICODE_STRING ObjectTypeName,
+    IN PUNICODE_STRING ObjectName,
+    IN PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN HANDLE ClientToken,
+    IN ULONG DesiredAccess,
+    IN ULONG GrantedAccess,
+    IN PPRIVILEGE_SET Privileges,
+    IN BOOLEAN ObjectCreation,
+    IN BOOLEAN AccessGranted,
+    OUT PBOOLEAN GenerateOnClose
+);
+
+NTSTATUS
+STDCALL
+ZwProtectVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID *BaseAddress,
+    IN ULONG *NumberOfBytesToProtect,
+    IN ULONG NewAccessProtection,
+    OUT PULONG OldAccessProtection
+);
+
+NTSTATUS
+STDCALL
+NtQueryInformationAtom(
+    IN  RTL_ATOM Atom,
+    IN  ATOM_INFORMATION_CLASS AtomInformationClass,
+    OUT PVOID AtomInformation,
+    IN  ULONG AtomInformationLength,
+    OUT PULONG ReturnLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwQueryInformationAtom(
+    IN  RTL_ATOM Atom,
+    IN  ATOM_INFORMATION_CLASS AtomInformationClass,
+    OUT PVOID AtomInformation,
+    IN  ULONG AtomInformationLength,
+    OUT PULONG ReturnLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwQueryDirectoryObject(
+    IN     HANDLE DirectoryHandle,
+    OUT    PVOID Buffer,
+    IN     ULONG BufferLength,
+    IN     BOOLEAN ReturnSingleEntry,
+    IN     BOOLEAN RestartScan,
+    IN OUT PULONG Context,
+    OUT    PULONG ReturnLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwQueryIntervalProfile(
+    OUT PULONG Interval,
+    OUT KPROFILE_SOURCE ClockSource
+);
+
+NTSTATUS
+STDCALL
+ZwQueryObject(
+    IN HANDLE ObjectHandle,
+    IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+    OUT PVOID ObjectInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+NtQuerySecurityObject(
+    IN HANDLE Handle,
+    IN SECURITY_INFORMATION SecurityInformation,
+    OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySecurityObject(
+    IN HANDLE Handle,
+    IN SECURITY_INFORMATION SecurityInformation,
+    OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+
+NTSTATUS
+STDCALL
+ZwQueryVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID Address,
+    IN IN CINT VirtualMemoryInformationClass,
+    OUT PVOID VirtualMemoryInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+ZwRaiseHardError(
+    IN NTSTATUS Status,
+    ULONG Unknown2,
+    ULONG Unknown3,
+    ULONG Unknown4,
+    ULONG Unknown5,
+    ULONG Unknown6
+);
+
+NTSTATUS
+STDCALL
+ZwSetInformationKey(
+    IN HANDLE KeyHandle,
+    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
+    IN PVOID KeyInformation,
+    IN ULONG KeyInformationLength
+);
+
+NTSTATUS
+STDCALL
+ZwSetInformationObject(
+    IN HANDLE ObjectHandle,
+    IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+    IN PVOID ObjectInformation,
+    IN ULONG Length
+);
+
+NTSTATUS
+STDCALL
+NtSetInformationProcess(
+    IN HANDLE ProcessHandle,
+    IN PROCESSINFOCLASS ProcessInformationClass,
+    IN PVOID ProcessInformation,
+    IN ULONG ProcessInformationLength
+);
+
+NTSTATUS
+STDCALL
+ZwUnloadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+NTSTATUS 
+STDCALL
+ZwUnlockVirtualMemory(
+    IN HANDLE ProcessHandle,
+    IN PVOID BaseAddress,
+    IN ULONG  NumberOfBytesToUnlock,
+    OUT PULONG NumberOfBytesUnlocked OPTIONAL
+);
+
+NTSTATUS
+STDCALL
+ZwWaitForMultipleObjects (
+    IN ULONG Count,
+    IN HANDLE Object[],
+    IN WAIT_TYPE WaitType,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Time
+);
+
+NTSTATUS 
+STDCALL
+ZwCreateProfile(
+    OUT PHANDLE ProfileHandle, 
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN ULONG ImageBase, 
+    IN ULONG ImageSize, 
+    IN ULONG Granularity,
+    OUT PVOID Buffer, 
+    IN ULONG ProfilingSize,
+    IN ULONG ClockSource,
+    IN ULONG ProcessorMask
+);
+
+NTSTATUS
+STDCALL
+ZwDelayExecution(
+    IN BOOLEAN Alertable,
+    IN LARGE_INTEGER *Interval
+);
+
+NTSTATUS
+STDCALL
+ZwExtendSection(
+    IN HANDLE SectionHandle,
+    IN PLARGE_INTEGER NewMaximumSize
+);
+
+NTSTATUS
+STDCALL
+ZwQuerySection(
+    IN HANDLE SectionHandle,
+    IN CINT SectionInformationClass,
+    OUT PVOID SectionInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSTATUS
+STDCALL
+NtLoadKey2(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes,
+    IN ULONG Flags
+);
+
+NTSTATUS
+STDCALL
+ZwLoadKey2(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes,
+    IN ULONG Flags
+);
+
+NTSTATUS
+STDCALL
+NtQuerySystemTime (
+    OUT PLARGE_INTEGER CurrentTime
+);
+
+NTSTATUS
+STDCALL
+NtQueryObject(
+    IN HANDLE ObjectHandle,
+    IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
+    OUT PVOID ObjectInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength OPTIONAL
+);
+
+static inline struct _PEB * NtCurrentPeb(void)
+{
+ struct _PEB * pPeb;
+
+#if defined(__GNUC__)
+
+ __asm__ __volatile__
+ (
+  "movl %%fs:0x30, %0\n" /* fs:30h == Teb->Peb */
+  : "=r" (pPeb) /* can't have two memory operands */
+  : /* no inputs */
+ );
+
+#elif defined(_MSC_VER)
+
+    __asm mov eax, fs:0x30;
+    __asm mov pPeb, eax
+
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+ return pPeb;
+}   
+#endif
diff --git a/reactos/include/ndk/zwtypes.h b/reactos/include/ndk/zwtypes.h
new file mode 100644 (file)
index 0000000..26fe844
--- /dev/null
@@ -0,0 +1,983 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/zwtypes.h
+ * PURPOSE:         Defintions for Native Types not defined in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 06/10/04
+ */
+#ifndef _ZWTYPES_H
+#define _ZWTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+#include "rtltypes.h"
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _PLUGPLAY_BUS_CLASS
+{
+    SystemBus,
+    PlugPlayVirtualBus,
+    MaxPlugPlayBusClass
+} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
+
+typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE 
+{
+    Root,
+    MaxPlugPlayVirtualBusType
+} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
+
+/**** Information Classes ****/
+/*
+ * System
+ */
+typedef enum _SYSTEM_INFORMATION_CLASS 
+{
+    SystemBasicInformation,
+    SystemProcessorInformation,
+    SystemPerformanceInformation,
+    SystemTimeOfDayInformation,
+    SystemPathInformation, /* OBSOLETE: USE KUSER_SHARED_DATA */
+    SystemProcessInformation,
+    SystemCallCountInformation,
+    SystemDeviceInformation,
+    SystemProcessorPerformanceInformation,
+    SystemFlagsInformation,
+    SystemCallTimeInformation,
+    SystemModuleInformation,
+    SystemLocksInformation,
+    SystemStackTraceInformation,
+    SystemPagedPoolInformation,
+    SystemNonPagedPoolInformation,
+    SystemHandleInformation,
+    SystemObjectInformation,
+    SystemPageFileInformation,
+    SystemVdmInstemulInformation,
+    SystemVdmBopInformation,
+    SystemFileCacheInformation,
+    SystemPoolTagInformation,
+    SystemInterruptInformation,
+    SystemDpcBehaviorInformation,
+    SystemFullMemoryInformation,
+    SystemLoadGdiDriverInformation,
+    SystemUnloadGdiDriverInformation,
+    SystemTimeAdjustmentInformation,
+    SystemSummaryMemoryInformation,
+    SystemNextEventIdInformation,
+    SystemEventIdsInformation,
+    SystemCrashDumpInformation,
+    SystemExceptionInformation,
+    SystemCrashDumpStateInformation,
+    SystemKernelDebuggerInformation,
+    SystemContextSwitchInformation,
+    SystemRegistryQuotaInformation,
+    SystemExtendServiceTableInformation,
+    SystemPrioritySeperation,
+    SystemPlugPlayBusInformation,
+    SystemDockInformation,
+    SystemPowerInformation,
+    SystemProcessorSpeedInformation,
+    SystemCurrentTimeZoneInformation,
+    SystemLookasideInformation,
+    SystemTimeSlipNotification,
+    SystemSessionCreate,
+    SystemSessionDetach,
+    SystemSessionInformation,
+    SystemRangeStartInformation,
+    SystemVerifierInformation,
+    SystemAddVerifier,
+    SystemSessionProcessesInformation,
+    SystemInformationClassMax
+} SYSTEM_INFORMATION_CLASS;
+
+/*
+ * Object
+ */
+typedef enum _OBJECT_INFORMATION_CLASS 
+{
+    ObjectBasicInformation,
+    ObjectNameInformation,
+    ObjectTypeInformation,
+    ObjectAllTypesInformation,
+    ObjectHandleInformation
+} OBJECT_INFORMATION_CLASS;
+
+/*
+ * Memory
+ */
+typedef enum _MEMORY_INFORMATION_CLASS 
+{
+    MemoryBasicInformation,
+    MemoryWorkingSetList,
+    MemorySectionName,
+    MemoryBasicVlmInformation
+} MEMORY_INFORMATION_CLASS;
+
+/*
+ * Mutant
+ */
+typedef enum _MUTANT_INFORMATION_CLASS 
+{
+    MutantBasicInformation
+} MUTANT_INFORMATION_CLASS;
+
+/*
+ * Atom
+ */
+typedef enum _ATOM_INFORMATION_CLASS
+{
+    AtomBasicInformation,
+    AtomTableInformation,
+} ATOM_INFORMATION_CLASS;
+
+/*
+ * Section
+ */
+typedef enum _SECTION_INFORMATION_CLASS 
+{
+    SectionBasicInformation,
+    SectionImageInformation,
+} SECTION_INFORMATION_CLASS;
+
+/*
+ * Timer
+ */
+typedef enum _TIMER_INFORMATION_CLASS {
+    TimerBasicInformation
+} TIMER_INFORMATION_CLASS;
+
+/*
+ * Semaphore
+ */
+typedef enum _SEMAPHORE_INFORMATION_CLASS 
+{
+    SemaphoreBasicInformation
+} SEMAPHORE_INFORMATION_CLASS;
+
+/*
+ * Event
+ */
+typedef enum _EVENT_INFORMATION_CLASS 
+{
+    EventBasicInformation
+} EVENT_INFORMATION_CLASS;
+
+/*
+ * I/O Completion
+ */
+typedef enum _IO_COMPLETION_INFORMATION_CLASS 
+{
+    IoCompletionBasicInformation
+} IO_COMPLETION_INFORMATION_CLASS;
+
+/* TYPES *********************************************************************/
+
+typedef unsigned short LANGID;
+typedef LANGID *PLANGID;
+
+/**** Information Structures ****/
+/*
+ * Mutant
+ */
+
+/* Class 0 */
+typedef struct _MUTANT_BASIC_INFORMATION 
+{
+    LONG CurrentCount;
+    BOOLEAN OwnedbyCalled;
+    BOOLEAN AbandonedState;
+} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION;
+
+/*
+ * Thread
+ */
+
+/* Class 0 */
+typedef struct _THREAD_BASIC_INFORMATION
+{
+    NTSTATUS  ExitStatus;
+    PVOID TebBaseAddress;
+    CLIENT_ID ClientId;
+    KAFFINITY AffinityMask;
+    KPRIORITY Priority;
+    KPRIORITY BasePriority;
+} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
+
+/*
+ * Atom
+ */
+
+/* Class 0 */
+typedef struct _ATOM_BASIC_INFORMATION {
+    USHORT UsageCount;
+    USHORT Flags;
+    USHORT NameLength;
+    WCHAR Name[1];
+} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;
+
+/* Class 1 */
+typedef struct _ATOM_TABLE_INFORMATION 
+{
+    ULONG NumberOfAtoms;
+    USHORT Atoms[1];
+} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION;
+
+/*
+ * Memory
+ */
+ /* Class 1 */
+typedef struct _MEMORY_WORKING_SET_LIST 
+{
+    ULONG NumberOfPages;
+    ULONG WorkingSetList[1];
+} MEMORY_WORKING_SET_LIST, *PMEMORY_WORKING_SET_LIST;
+
+/* Class 2 */
+typedef struct {
+    UNICODE_STRING SectionFileName;
+    WCHAR          NameBuffer[ANYSIZE_ARRAY];
+} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME;
+/*
+ * Section
+ */
+
+/* Class 0 */
+typedef struct _SECTION_BASIC_INFORMATION 
+{
+    PVOID           BaseAddress;
+    ULONG           Attributes;
+    LARGE_INTEGER   Size;
+} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION;
+
+/* Class 1 */
+typedef struct _SECTION_IMAGE_INFORMATION 
+{
+    ULONG     EntryPoint;
+    ULONG     Unknown1;
+    ULONG_PTR StackReserve;
+    ULONG_PTR StackCommit;
+    ULONG     Subsystem;
+    USHORT    MinorSubsystemVersion;
+    USHORT    MajorSubsystemVersion;
+    ULONG     Unknown2;
+    ULONG     Characteristics;
+    USHORT    ImageNumber;
+    BOOLEAN   Executable;
+    UCHAR     Unknown3;
+    ULONG     Unknown4[3];
+} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
+
+/*
+ * Object 
+ */
+
+/* Class 4 */
+typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFORMATION 
+{
+    BOOLEAN Inherit;
+    BOOLEAN ProtectFromClose;
+} OBJECT_HANDLE_ATTRIBUTE_INFORMATION, *POBJECT_HANDLE_ATTRIBUTE_INFORMATION;
+
+/*
+ * Timer
+ */
+
+/* Class 0 */
+typedef struct _TIMER_BASIC_INFORMATION 
+{
+    LARGE_INTEGER TimeRemaining;
+    BOOLEAN SignalState;
+} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION;
+
+/*
+ * Semaphore
+ */
+
+/* Class 0 */
+typedef struct _SEMAPHORE_BASIC_INFORMATION {
+    LONG CurrentCount;
+    LONG MaximumCount;
+} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION;
+
+/*
+ * Event
+ *
+/* Class 0 */
+typedef struct _EVENT_BASIC_INFORMATION 
+{
+    EVENT_TYPE EventType;
+    LONG EventState;
+} EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
+
+/*
+ * System
+ */
+
+/* Class 0 */
+typedef struct _SYSTEM_BASIC_INFORMATION
+{
+    ULONG Reserved;
+    ULONG TimerResolution;
+    ULONG PageSize;
+    ULONG NumberOfPhysicalPages;
+    ULONG LowestPhysicalPageNumber;
+    ULONG HighestPhysicalPageNumber;
+    ULONG AllocationGranularity;
+    ULONG MinimumUserModeAddress;
+    ULONG MaximumUserModeAddress;
+    KAFFINITY ActiveProcessorsAffinityMask;
+    CCHAR NumberOfProcessors;
+} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
+
+/* Class 1 */
+typedef struct _SYSTEM_PROCESSOR_INFORMATION {
+    USHORT ProcessorArchitecture;
+    USHORT ProcessorLevel;
+    USHORT ProcessorRevision;
+    USHORT Reserved;
+    ULONG ProcessorFeatureBits;
+} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
+
+/* Class 2 */
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION 
+{
+    LARGE_INTEGER IdleProcessTime;
+    LARGE_INTEGER IoReadTransferCount;
+    LARGE_INTEGER IoWriteTransferCount;
+    LARGE_INTEGER IoOtherTransferCount;
+    ULONG IoReadOperationCount;
+    ULONG IoWriteOperationCount;
+    ULONG IoOtherOperationCount;
+    ULONG AvailablePages;
+    ULONG CommittedPages;
+    ULONG CommitLimit;
+    ULONG PeakCommitment;
+    ULONG PageFaultCount;
+    ULONG CopyOnWriteCount;
+    ULONG TransitionCount;
+    ULONG CacheTransitionCount;
+    ULONG DemandZeroCount;
+    ULONG PageReadCount;
+    ULONG PageReadIoCount;
+    ULONG CacheReadCount;
+    ULONG CacheIoCount;
+    ULONG DirtyPagesWriteCount;
+    ULONG DirtyWriteIoCount;
+    ULONG MappedPagesWriteCount;
+    ULONG MappedWriteIoCount;
+    ULONG PagedPoolPages;
+    ULONG NonPagedPoolPages;
+    ULONG PagedPoolAllocs;
+    ULONG PagedPoolFrees;
+    ULONG NonPagedPoolAllocs;
+    ULONG NonPagedPoolFrees;
+    ULONG FreeSystemPtes;
+    ULONG ResidentSystemCodePage;
+    ULONG TotalSystemDriverPages;
+    ULONG TotalSystemCodePages;
+    ULONG NonPagedPoolLookasideHits;
+    ULONG PagedPoolLookasideHits;
+    ULONG Spare3Count;
+    ULONG ResidentSystemCachePage;
+    ULONG ResidentPagedPoolPage;
+    ULONG ResidentSystemDriverPage;
+    ULONG CcFastReadNoWait;
+    ULONG CcFastReadWait;
+    ULONG CcFastReadResourceMiss;
+    ULONG CcFastReadNotPossible;
+    ULONG CcFastMdlReadNoWait;
+    ULONG CcFastMdlReadWait;
+    ULONG CcFastMdlReadResourceMiss;
+    ULONG CcFastMdlReadNotPossible;
+    ULONG CcMapDataNoWait;
+    ULONG CcMapDataWait;
+    ULONG CcMapDataNoWaitMiss;
+    ULONG CcMapDataWaitMiss;
+    ULONG CcPinMappedDataCount;
+    ULONG CcPinReadNoWait;
+    ULONG CcPinReadWait;
+    ULONG CcPinReadNoWaitMiss;
+    ULONG CcPinReadWaitMiss;
+    ULONG CcCopyReadNoWait;
+    ULONG CcCopyReadWait;
+    ULONG CcCopyReadNoWaitMiss;
+    ULONG CcCopyReadWaitMiss;
+    ULONG CcMdlReadNoWait;
+    ULONG CcMdlReadWait;
+    ULONG CcMdlReadNoWaitMiss;
+    ULONG CcMdlReadWaitMiss;
+    ULONG CcReadAheadIos;
+    ULONG CcLazyWriteIos;
+    ULONG CcLazyWritePages;
+    ULONG CcDataFlushes;
+    ULONG CcDataPages;
+    ULONG ContextSwitches;
+    ULONG FirstLevelTbFills;
+    ULONG SecondLevelTbFills;
+    ULONG SystemCalls;
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
+
+/* Class 3 */
+typedef struct _SYSTEM_TIMEOFDAY_INFORMATION {
+    LARGE_INTEGER BootTime;
+    LARGE_INTEGER CurrentTime;
+    LARGE_INTEGER TimeZoneBias;
+    ULONG TimeZoneId;
+    ULONG Reserved;
+} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
+
+/* Class 4 */
+/* This class is obsoleted, please use KUSER_SHARED_DATA instead */
+
+/* Class 5 */
+typedef struct _SYSTEM_THREAD_INFORMATION 
+{
+    LARGE_INTEGER KernelTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER CreateTime;
+    ULONG WaitTime;
+    PVOID StartAddress;
+    CLIENT_ID ClientId;
+    KPRIORITY Priority;
+    LONG BasePriority;
+    ULONG ContextSwitches;
+    ULONG ThreadState;
+    ULONG WaitReason;
+} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
+typedef struct _SYSTEM_PROCESS_INFORMATION
+{
+    ULONG NextEntryOffset;
+    ULONG NumberOfThreads;
+    LARGE_INTEGER SpareLi1;
+    LARGE_INTEGER SpareLi2;
+    LARGE_INTEGER SpareLi3;
+    LARGE_INTEGER CreateTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER KernelTime;
+    UNICODE_STRING ImageName;
+    KPRIORITY BasePriority;
+    HANDLE UniqueProcessId;
+    HANDLE InheritedFromUniqueProcessId;
+    ULONG HandleCount;
+    ULONG SessionId;
+    ULONG PageDirectoryFrame;
+    
+    /* 
+     * This part corresponds to VM_COUNTERS_EX. 
+     * NOTE: *NOT* THE SAME AS VM_COUNTERS!
+     */
+    ULONG PeakVirtualSize;
+    ULONG VirtualSize;
+    ULONG PageFaultCount;
+    ULONG PeakWorkingSetSize;
+    ULONG WorkingSetSize;
+    ULONG QuotaPeakPagedPoolUsage;
+    ULONG QuotaPagedPoolUsage;
+    ULONG QuotaPeakNonPagedPoolUsage;
+    ULONG QuotaNonPagedPoolUsage;
+    ULONG PagefileUsage;
+    ULONG PeakPagefileUsage;
+    ULONG PrivateUsage;
+    
+    /* This part corresponds to IO_COUNTERS */
+    LARGE_INTEGER ReadOperationCount;
+    LARGE_INTEGER WriteOperationCount;
+    LARGE_INTEGER OtherOperationCount;
+    LARGE_INTEGER ReadTransferCount;
+    LARGE_INTEGER WriteTransferCount;
+    LARGE_INTEGER OtherTransferCount;
+    
+    /* Finally, the array of Threads */
+    SYSTEM_THREAD_INFORMATION TH[1];
+} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
+
+/* Class 6 */
+typedef struct _SYSTEM_CALL_COUNT_INFORMATION 
+{
+    ULONG Length;
+    ULONG NumberOfTables;
+} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION; 
+
+/* Class 7 */
+typedef struct _SYSTEM_DEVICE_INFORMATION {
+    ULONG NumberOfDisks;
+    ULONG NumberOfFloppies;
+    ULONG NumberOfCdRoms;
+    ULONG NumberOfTapes;
+    ULONG NumberOfSerialPorts;
+    ULONG NumberOfParallelPorts;
+} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION;
+
+/* Class 8 */
+typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION 
+{
+    LARGE_INTEGER IdleTime;
+    LARGE_INTEGER KernelTime;
+    LARGE_INTEGER UserTime;
+    LARGE_INTEGER DpcTime;
+    LARGE_INTEGER InterruptTime;
+    ULONG InterruptCount;
+} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION,
+
+/* Class 9 */
+typedef struct _SYSTEM_FLAGS_INFORMATION 
+{
+    ULONG Flags;
+} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION;
+
+/* Class 10 */
+typedef struct _SYSTEM_CALL_TIME_INFORMATION 
+{
+    ULONG Length;
+    ULONG TotalCalls;
+    LARGE_INTEGER TimeOfCalls[1];
+} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION;
+
+/* Class 11 */
+typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY 
+{
+    ULONG  Unknown1;
+    ULONG  Unknown2;
+    PVOID  Base;
+    ULONG  Size;
+    ULONG  Flags;
+    USHORT  Index;
+    USHORT  NameLength;
+    USHORT  LoadCount;
+    USHORT  PathLength;
+    CHAR  ImageName[256];
+} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
+typedef struct _SYSTEM_MODULE_INFORMATION 
+{
+    ULONG Count;
+    SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
+} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
+
+/* Class 12 */
+typedef struct _SYSTEM_RESOURCE_LOCK_ENTRY 
+{
+    ULONG  ResourceAddress;
+    ULONG  Always1;
+    ULONG  Unknown;
+    ULONG  ActiveCount;
+    ULONG  ContentionCount;
+    ULONG  Unused[2];
+    ULONG  NumberOfSharedWaiters;
+    ULONG  NumberOfExclusiveWaiters;
+} SYSTEM_RESOURCE_LOCK_ENTRY, *PSYSTEM_RESOURCE_LOCK_ENTRY;
+typedef struct _SYSTEM_RESOURCE_LOCK_INFO 
+{
+    ULONG Count;
+    SYSTEM_RESOURCE_LOCK_ENTRY Lock[1];
+} SYSTEM_RESOURCE_LOCK_INFO, *PSYSTEM_RESOURCE_LOCK_INFO;
+
+/* Class 13 */
+typedef struct _SYSTEM_BACKTRACE_INFORMATION_ENTRY
+{
+    /* FIXME */
+} SYSTEM_BACKTRACE_INFORMATION_ENTRY, *PSYSTEM_BACKTRACE_INFORMATION_ENTRY;
+typedef struct _SYSTEM_BACKTRACE_INFORMATION
+{
+    /* FIXME */
+    ULONG Unknown[4]
+    ULONG Count;
+    SYSTEM_BACKTRACE_INFORMATION_ENTRY Trace[1];
+} SYSTEM_BACKTRACE_INFORMATION, *PSYSTEM_BACKTRACE_INFORMATION;
+
+/* Class 14 - 15 */
+typedef struct _SYSTEM_POOL_ENTRY 
+{
+    BOOLEAN Allocated;
+    BOOLEAN Spare0;
+    USHORT AllocatorBackTraceIndex;
+    ULONG Size;
+    union {
+        UCHAR Tag[4];
+        ULONG TagUlong;
+        PVOID ProcessChargedQuota;
+    };
+} SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY;
+typedef struct _SYSTEM_POOL_INFORMATION 
+{
+    ULONG TotalSize;
+    PVOID FirstEntry;
+    USHORT EntryOverhead;
+    BOOLEAN PoolTagPresent;
+    BOOLEAN Spare0;
+    ULONG NumberOfEntries;
+    SYSTEM_POOL_ENTRY Entries[1];
+} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION;
+
+/* Class 16 */
+typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO 
+{
+    USHORT UniqueProcessId;
+    USHORT CreatorBackTraceIndex;
+    UCHAR ObjectTypeIndex;
+    UCHAR HandleAttributes;
+    USHORT HandleValue;
+    PVOID Object;
+    ULONG GrantedAccess;
+} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO; 
+typedef struct _SYSTEM_HANDLE_INFORMATION 
+{
+    ULONG NumberOfHandles;
+    SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
+} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
+
+/* Class 17 */
+typedef struct _SYSTEM_OBJECTTYPE_INFORMATION 
+{
+    ULONG NextEntryOffset;
+    ULONG NumberOfObjects;
+    ULONG NumberOfHandles;
+    ULONG TypeIndex;
+    ULONG InvalidAttributes;
+    GENERIC_MAPPING GenericMapping;
+    ULONG ValidAccessMask;
+    ULONG PoolType;
+    BOOLEAN SecurityRequired;
+    BOOLEAN WaitableObject;
+    UNICODE_STRING TypeName;
+} SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION; 
+typedef struct _SYSTEM_OBJECT_INFORMATION 
+{
+    ULONG NextEntryOffset;
+    PVOID Object;
+    HANDLE CreatorUniqueProcess;
+    USHORT CreatorBackTraceIndex;
+    USHORT Flags;
+    LONG PointerCount;
+    LONG HandleCount;
+    ULONG PagedPoolCharge;
+    ULONG NonPagedPoolCharge;
+    HANDLE ExclusiveProcessId;
+    PVOID SecurityDescriptor;
+    OBJECT_NAME_INFORMATION NameInfo;
+} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;
+
+/* Class 18 */
+typedef struct _SYSTEM_PAGEFILE_INFORMATION 
+{
+    ULONG NextEntryOffset;
+    ULONG TotalSize;
+    ULONG TotalInUse;
+    ULONG PeakUsage;
+    UNICODE_STRING PageFileName;
+} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;
+
+/* Class 19 */
+typedef struct _SYSTEM_VDM_INSTEMUL_INFO 
+{
+    ULONG SegmentNotPresent;
+    ULONG VdmOpcode0F;
+    ULONG OpcodeESPrefix;
+    ULONG OpcodeCSPrefix;
+    ULONG OpcodeSSPrefix;
+    ULONG OpcodeDSPrefix;
+    ULONG OpcodeFSPrefix;
+    ULONG OpcodeGSPrefix;
+    ULONG OpcodeOPER32Prefix;
+    ULONG OpcodeADDR32Prefix;
+    ULONG OpcodeINSB;
+    ULONG OpcodeINSW;
+    ULONG OpcodeOUTSB;
+    ULONG OpcodeOUTSW;
+    ULONG OpcodePUSHF;
+    ULONG OpcodePOPF;
+    ULONG OpcodeINTnn;
+    ULONG OpcodeINTO;
+    ULONG OpcodeIRET;
+    ULONG OpcodeINBimm;
+    ULONG OpcodeINWimm;
+    ULONG OpcodeOUTBimm;
+    ULONG OpcodeOUTWimm ;
+    ULONG OpcodeINB;
+    ULONG OpcodeINW;
+    ULONG OpcodeOUTB;
+    ULONG OpcodeOUTW;
+    ULONG OpcodeLOCKPrefix;
+    ULONG OpcodeREPNEPrefix;
+    ULONG OpcodeREPPrefix;
+    ULONG OpcodeHLT;
+    ULONG OpcodeCLI;
+    ULONG OpcodeSTI;
+    ULONG BopCount;
+} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO;
+
+/* Class 20 */
+typedef struct _SYSTEM_VDM_BOP_INFO 
+{
+    /* FIXME */
+}
+
+/* Class 21 */
+typedef struct _SYSTEM_CACHE_INFORMATION 
+{
+    ULONG CurrentSize;
+    ULONG PeakSize;
+    ULONG PageFaultCount;
+    ULONG MinimumWorkingSet;
+    ULONG MaximumWorkingSet;
+    ULONG CurrentSizeIncludingTransitionInPages;
+    ULONG PeakSizeIncludingTransitionInPages;
+    ULONG Unused[2];
+} SYSTEM_CACHE_INFORMATION;
+
+/* Class 22 */
+typedef struct _SYSTEM_POOLTAG 
+{
+    union 
+    {
+        UCHAR Tag[4];
+        ULONG TagUlong;
+    };
+    ULONG PagedAllocs;
+    ULONG PagedFrees;
+    ULONG PagedUsed;
+    ULONG NonPagedAllocs;
+    ULONG NonPagedFrees;
+    ULONG NonPagedUsed;
+} SYSTEM_POOLTAG, *PSYSTEM_POOLTAG;
+typedef struct _SYSTEM_POOLTAG_INFORMATION 
+{
+    ULONG Count;
+    SYSTEM_POOLTAG TagInfo[1];
+} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
+
+/* Class 23 */
+typedef struct _SYSTEM_INTERRUPT_INFORMATION 
+{
+    ULONG ContextSwitches;
+    ULONG DpcCount;
+    ULONG DpcRate;
+    ULONG TimeIncrement;
+    ULONG DpcBypassCount;
+    ULONG ApcBypassCount;
+} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
+
+/* Class 24 */
+typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION 
+{
+    ULONG Spare;
+    ULONG DpcQueueDepth;
+    ULONG MinimumDpcRate;
+    ULONG AdjustDpcThreshold;
+    ULONG IdealDpcRate;
+} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION; 
+
+/* Class 25 */
+typedef struct _SYSTEM_MEMORY_INFO 
+{
+    PUCHAR StringOffset;
+    USHORT ValidCount;
+    USHORT TransitionCount;
+    USHORT ModifiedCount;
+    USHORT PageTableCount;
+} SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO; 
+typedef struct _SYSTEM_MEMORY_INFORMATION 
+{
+    ULONG InfoSize;
+    ULONG StringStart;
+    SYSTEM_MEMORY_INFO Memory[1];
+} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION;
+
+/* Class 26 */
+typedef struct _SYSTEM_GDI_DRIVER_INFORMATION {
+    UNICODE_STRING DriverName;
+    PVOID ImageAddress;
+    PVOID SectionPointer;
+    PVOID EntryPoint;
+    PIMAGE_EXPORT_DIRECTORY ExportSectionPointer;
+} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION; 
+
+/* Class 27 */
+/* Not an actuall class, simply a PVOID to the ImageAddress */
+
+/* Class 28 */
+typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
+{
+    ULONG TimeAdjustment;
+    ULONG TimeIncrement;
+    BOOLEAN Enable;
+} SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION;
+typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION 
+{
+    ULONG TimeAdjustment;
+    BOOLEAN Enable;
+} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION;
+
+/* Class 29 - Same as 25 */
+
+/* Class 30 - 31 */
+/* FIXME */
+
+/* Class 32 */
+typedef struct _SYSTEM_CRASH_DUMP_INFORMATION 
+{
+    HANDLE CrashDumpSection;
+} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION; 
+
+/* Class 33 */
+typedef struct _SYSTEM_EXCEPTION_INFORMATION 
+{
+    ULONG AlignmentFixupCount;
+    ULONG ExceptionDispatchCount;
+    ULONG FloatingEmulationCount;
+    ULONG ByteWordEmulationCount;
+} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION;
+/* Class 34 */
+typedef struct _SYSTEM_CRASH_STATE_INFORMATION 
+{
+    ULONG ValidCrashDump;
+} SYSTEM_CRASH_STATE_INFORMATION, *PSYSTEM_CRASH_STATE_INFORMATION;
+
+/* Class 35 */
+typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION 
+{
+    BOOLEAN KernelDebuggerEnabled;
+    BOOLEAN KernelDebuggerNotPresent;
+} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; 
+
+/* Class 36 */
+typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION {
+    ULONG ContextSwitches;
+    ULONG FindAny;
+    ULONG FindLast;
+    ULONG FindIdeal;
+    ULONG IdleAny;
+    ULONG IdleCurrent;
+    ULONG IdleLast;
+    ULONG IdleIdeal;
+    ULONG PreemptAny;
+    ULONG PreemptCurrent;
+    ULONG PreemptLast;
+    ULONG SwitchToIdle;
+} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION;
+
+/* Class 37 */
+typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION 
+{
+    ULONG RegistryQuotaAllowed;
+    ULONG RegistryQuotaUsed;
+    ULONG PagedPoolSize;
+} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION;
+
+/* Class 38 */
+/* Not a structure, simply send the UNICODE_STRING */
+
+/* Class 39 */
+/* Not a structure, simply send a ULONG containing the new separation */
+
+/* Class 40 */ 
+typedef struct _PLUGPLAY_BUS_TYPE
+{
+    PLUGPLAY_BUS_CLASS BusClass;
+    union 
+    {
+        INTERFACE_TYPE SystemBusType;
+        PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;
+    };
+} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE; 
+typedef struct _PLUGPLAY_BUS_INSTANCE 
+{
+    PLUGPLAY_BUS_TYPE BusType;
+    ULONG BusNumber;
+    WCHAR BusName[MAX_BUS_NAME];
+} PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;
+typedef struct _SYSTEM_PLUGPLAY_BUS_INFORMATION 
+{
+    ULONG BusCount;
+    PLUGPLAY_BUS_INSTANCE BusInstance[1];
+} SYSTEM_PLUGPLAY_BUS_INFORMATION, *PSYSTEM_PLUGPLAY_BUS_INFORMATION;
+
+/* Class 41 */
+typedef struct _SYSTEM_DOCK_INFORMATION 
+{
+    SYSTEM_DOCK_STATE DockState;
+    INTERFACE_TYPE DeviceBusType;
+    ULONG DeviceBusNumber;
+    ULONG SlotNumber;
+} SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
+
+/* Class 42 */
+typedef struct _SYSTEM_POWER_INFORMATION
+{
+    BOOLEAN SystemSuspendSupported;
+    BOOLEAN SystemHibernateSupported;
+    BOOLEAN ResumeTimerSupportsSuspend;
+    BOOLEAN ResumeTimerSupportsHibernate;
+    BOOLEAN LidSupported;
+    BOOLEAN TurboSettingSupported;
+    BOOLEAN TurboMode;
+    BOOLEAN SystemAcOrDc;
+    BOOLEAN PowerDownDisabled;
+    LARGE_INTEGER SpindownDrives;
+} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
+
+/* Class 43 */
+typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION
+{
+    PNP_VETO_TYPE VetoType;
+    UNCODE_STRING VetoDriver;
+    /* Buffer Follows */
+} SYSTEM_PROCESSOR_SPEED_INFORMATION, *PSYSTEM_PROCESSOR_SPEED_INFORMATION;
+
+/* Class 44 */
+typedef TIME_ZONE_INFORMATION RTL_TIME_ZONE_INFORMATION;
+
+/* Class 45 */
+typedef struct _SYSTEM_LOOKASIDE_INFORMATION 
+{
+    USHORT CurrentDepth;
+    USHORT MaximumDepth;
+    ULONG TotalAllocates;
+    ULONG AllocateMisses;
+    ULONG TotalFrees;
+    ULONG FreeMisses;
+    ULONG Type;
+    ULONG Tag;
+    ULONG Size;
+} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION;
+
+/* Class 46 */
+/* Not a structure. Only a HANDLE for the SlipEvent;
+
+/* Class 47 */
+/* Not a structure. Only a ULONG for the SessionId;
+
+/* Class 48 */
+/* Not a structure. Only a ULONG for the SessionId;
+
+/* Class 49 */
+/* FIXME */
+
+/* Class 50 */
+/* Not a structure. Only a ULONG_PTR for the SystemRangeStart */
+
+/* Class 51 */
+/* FIXME. Based on MM_DRIVER_VERIFIER_DATA */
+
+/* Class 52 */
+/* FIXME */
+
+/* Class 53 */
+typedef struct _SYSTEM_SESSION_PROCESSES_INFORMATION 
+{
+    ULONG    SessionId;
+    ULONG    BufferSize;
+    PVOID    Buffer; /* same format as in SystemProcessInformation */
+} SYSTEM_SESSION_PROCESSES_INFORMATION, * PSYSTEM_SESSION_PROCESSES_INFORMATION;
+
+/* Class 54-81 */
+/* FIXME */
+
+
+#endif