NtAcceptConnectPort signature fixed.
[reactos.git] / reactos / include / ntos / zw.h
index 47989ba..82c57d3 100755 (executable)
@@ -1,5 +1,4 @@
-
-/* $Id: zw.h,v 1.14 2003/07/20 22:09:46 ekohl Exp $
+/* $Id$
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -12,6 +11,7 @@
  *              04/08/98: Added some documentation (Ariadne)
  *             14/08/98: Added type TIME and change variable type from [1] to [0]
  *              14/09/98: Added for each Nt call a corresponding Zw Call
+ *              09/08/03: Added ThreadEventPair routines
  */
 
 #ifndef __DDK_ZW_H
@@ -52,10 +52,92 @@ typedef struct _EVENT_BASIC_INFORMATION
        LONG EventState;
 } EVENT_BASIC_INFORMATION, *PEVENT_BASIC_INFORMATION;
 
+// wmi trace event data
+typedef struct _EVENT_TRACE_HEADER {
+  USHORT           Size;
+  union {
+    USHORT FieldTypeFlags;
+    struct {
+      UCHAR            HeaderType;
+      UCHAR            MarkerFlags;
+    };
+  };
+  union {
+    ULONG         Version;
+    struct {
+      UCHAR     Type;
+      UCHAR     Level;
+      USHORT    Version;
+    } Class;
+  };
+  ULONG ThreadId;
+  ULONG ProcessId;
+  LARGE_INTEGER    TimeStamp;
+  union {
+    GUID      Guid;
+    ULONGLONG GuidPtr;
+  };
+ union {
+    struct {
+      ULONG ClientContext;
+      ULONG Flags;
+    };
+    struct {
+      ULONG KernelTime;
+      ULONG UserTime;
+    };
+    ULONG64 ProcessorTime;
+  };
+} EVENT_TRACE_HEADER, *PEVENT_TRACE_HEADER;
+
+
+typedef struct _FILE_USER_QUOTA_INFORMATION {
+       ULONG NextEntryOffset;
+       ULONG SidLength;
+       LARGE_INTEGER ChangeTime;
+       LARGE_INTEGER QuotaUsed;
+       LARGE_INTEGER QuotaThreshold;
+       LARGE_INTEGER QuotaLimit;
+       SID Sid[1];
+} FILE_USER_QUOTA_INFORMATION, *PFILE_USER_QUOTA_INFORMATION;
+
+
 //#define LCID ULONG
 //#define SECURITY_INFORMATION ULONG
 //typedef ULONG SECURITY_INFORMATION;
 
+#ifndef __USE_NT_LPC__
+NTSTATUS STDCALL
+NtAcceptConnectPort (OUT PHANDLE PortHandle,
+                    IN  PVOID Context,
+                    IN  PLPC_MESSAGE ServerReply,
+                    IN  BOOLEAN AcceptIt,
+                    IN  PLPC_SECTION_WRITE WriteMap,
+                    IN  PLPC_SECTION_READ ReadMap);
+#else
+NTSTATUS STDCALL
+NtAcceptConnectPort (PHANDLE PortHandle,
+                    ULONG PortIdentifier,
+                    PLPC_MESSAGE ServerReply,
+                    BOOLEAN AcceptIt,
+                    PLPC_SECTION_WRITE WriteMap,
+                    PLPC_SECTION_READ ReadMap);
+#endif /* ndef __USE_NT_LPC__ */
+
+NTSTATUS
+STDCALL
+NtAddBootEntry(
+       IN PUNICODE_STRING EntryName,
+       IN PUNICODE_STRING EntryValue
+       );
+
+NTSTATUS
+STDCALL
+ZwAddBootEntry(
+       IN PUNICODE_STRING EntryName,
+       IN PUNICODE_STRING EntryValue
+       );
+
 /*
  * FUNCTION: Adjusts the groups in an access token
  * ARGUMENTS: 
@@ -236,6 +318,20 @@ ZwAllocateVirtualMemory (
        IN ULONG  AllocationType,
        IN ULONG  Protect);
 
+
+
+NTSTATUS 
+STDCALL 
+NtAssignProcessToJobObject(
+       HANDLE JobHandle,
+    HANDLE ProcessHandle);
+
+NTSTATUS 
+STDCALL 
+ZwAssignProcessToJobObject(
+       HANDLE JobHandle,
+    HANDLE ProcessHandle);
+
 /*
  * FUNCTION: Returns from a callback into user mode
  * ARGUMENTS:
@@ -295,6 +391,23 @@ 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
+       );
+
+
 /*
  * FUNCTION: Closes an object handle
  * ARGUMENTS:
@@ -343,6 +456,34 @@ ZwCloseObjectAuditAlarm(
        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);
+
 /*
  * FUNCTION: Creates a directory object
  * ARGUMENTS:
@@ -391,8 +532,8 @@ STDCALL
 NtCreateEvent(
        OUT PHANDLE EventHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN BOOLEAN ManualReset,
+       IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
+       IN EVENT_TYPE EventType,
        IN BOOLEAN InitialState
        );
 
@@ -401,8 +542,8 @@ STDCALL
 ZwCreateEvent(
        OUT PHANDLE EventHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN BOOLEAN ManualReset,
+       IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
+       IN EVENT_TYPE EventType,
        IN BOOLEAN InitialState
        );
 
@@ -619,7 +760,7 @@ STDCALL
 NtCreateMutant(
        OUT PHANDLE MutantHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
+       IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
        IN BOOLEAN InitialOwner
        );
 
@@ -628,10 +769,106 @@ STDCALL
 ZwCreateMutant(
        OUT PHANDLE MutantHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
+       IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
        IN BOOLEAN InitialOwner
        );
 
+/*
+ * FUNCTION: Creates a named pipe
+ * ARGUMENTS:
+ *        NamedPipeFileHandle (OUT) = Caller supplied storage for the 
+ *                                    resulting handle
+ *        DesiredAccess = Specifies the type of access that the caller 
+ *                        requires to the file boject
+ *        ObjectAttributes = Points to a structure that specifies the
+ *                           object attributes.
+ *        IoStatusBlock = Points to a variable that receives the final
+ *                        completion status and information
+ *        ShareAccess = Specifies the limitations on sharing of the file.
+ *                      This parameter can be zero or any compatible 
+ *                      combination of the following flags
+ *                         FILE_SHARE_READ
+ *                         FILE_SHARE_WRITE
+ *        CreateDisposition = Specifies what to do depending on whether
+ *                            the file already exists. This must be one of
+ *                            the following values
+ *                                  FILE_OPEN
+ *                                  FILE_CREATE
+ *                                  FILE_OPEN_IF
+ *        CreateOptions = Specifies the options to be applied when
+ *                        creating or opening the file, as a compatible
+ *                        combination of the following flags
+ *                            FILE_WRITE_THROUGH
+ *                            FILE_SYNCHRONOUS_IO_ALERT
+ *                            FILE_SYNCHRONOUS_IO_NONALERT
+ *        TypeMessage = Specifies whether the data written to the pipe is
+ *                      interpreted as a sequence of messages or as a 
+ *                      stream of bytes
+ *        ReadModeMessage = Specifies whether the data read from the pipe
+ *                          is interpreted as a sequence of messages or as
+ *                          a stream of bytes
+ *        NonBlocking = Specifies whether non-blocking mode is enabled
+ *        MaxInstances = Specifies the maximum number of instancs that can
+ *                       be created for this pipe
+ *        InBufferSize = Specifies the number of bytes to reserve for the
+ *                       input buffer
+ *        OutBufferSize = Specifies the number of bytes to reserve for the
+ *                        output buffer
+ *        DefaultTimeout = Optionally points to a variable that specifies
+ *                         the default timeout value in units of 
+ *                         100-nanoseconds.
+ * REMARKS: This funciton maps to the win32 function CreateNamedPipe
+ * RETURNS:
+ *     Status
+ */
+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 NamedPipeType,
+                      IN ULONG ReadMode,
+                      IN ULONG CompletionMode,
+                      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 NamedPipeType,
+                      IN ULONG ReadMode,
+                      IN ULONG CompletionMode,
+                      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);
+
+
 /*
  * FUNCTION: Creates a process.
  * ARGUMENTS:
@@ -648,8 +885,8 @@ ZwCreateMutant(
  *        This function maps to the win32 CreateProcess.
  * RETURNS: Status
  */
-NTSTATUS 
-STDCALL 
+NTSTATUS
+STDCALL
 NtCreateProcess(
        OUT PHANDLE ProcessHandle,
         IN ACCESS_MASK DesiredAccess,
@@ -661,8 +898,8 @@ NtCreateProcess(
         IN HANDLE ExceptionPort OPTIONAL
        );
 
-NTSTATUS 
-STDCALL 
+NTSTATUS
+STDCALL
 ZwCreateProcess(
        OUT PHANDLE ProcessHandle,
         IN ACCESS_MASK DesiredAccess,
@@ -691,11 +928,11 @@ ZwCreateProcess(
 
 NTSTATUS
 STDCALL
-NtCreateSection( 
-       OUT PHANDLE SectionHandle, 
+NtCreateSection(
+       OUT PHANDLE SectionHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,  
-       IN PLARGE_INTEGER MaximumSize OPTIONAL,  
+       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+       IN PLARGE_INTEGER MaximumSize OPTIONAL,
        IN ULONG SectionPageProtection OPTIONAL,
        IN ULONG AllocationAttributes,
        IN HANDLE FileHandle OPTIONAL
@@ -703,11 +940,11 @@ NtCreateSection(
 
 NTSTATUS
 STDCALL
-ZwCreateSection( 
-       OUT PHANDLE SectionHandle, 
+ZwCreateSection(
+       OUT PHANDLE SectionHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,  
-       IN PLARGE_INTEGER MaximumSize OPTIONAL,  
+       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+       IN PLARGE_INTEGER MaximumSize OPTIONAL,
        IN ULONG SectionPageProtection OPTIONAL,
        IN ULONG AllocationAttributes,
        IN HANDLE FileHandle OPTIONAL
@@ -759,19 +996,19 @@ ZwCreateSemaphore(
 NTSTATUS
 STDCALL
 NtCreateSymbolicLinkObject(
-       OUT PHANDLE SymbolicLinkHandle,
+       OUT PHANDLE LinkHandle,
        IN ACCESS_MASK DesiredAccess,
        IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN PUNICODE_STRING Name
+       IN PUNICODE_STRING LinkTarget
        );
 
 NTSTATUS
 STDCALL
 ZwCreateSymbolicLinkObject(
-       OUT PHANDLE SymbolicLinkHandle,
+       OUT PHANDLE LinkHandle,
        IN ACCESS_MASK DesiredAccess,
        IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN PUNICODE_STRING Name
+       IN PUNICODE_STRING LinkTarget
        );
 
 /*
@@ -873,6 +1110,22 @@ NtCurrentTeb(VOID
        );
 #endif
 
+
+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);
+
+
 /*
  * FUNCTION: Deletes an atom from the global atom table
  * ARGUMENTS:
@@ -893,6 +1146,20 @@ 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
+       );
+
 /*
  * FUNCTION: Deletes a file or a directory
  * ARGUMENTS:
@@ -1045,6 +1312,22 @@ ZwDisplayString(
        IN PUNICODE_STRING DisplayString
        );
 
+
+NTSTATUS
+STDCALL
+NtEnumerateBootEntries(
+       IN ULONG Unknown1,
+       IN ULONG Unknown2
+       );
+
+NTSTATUS
+STDCALL
+ZwEnumerateBootEntries(
+       IN ULONG Unknown1,
+       IN ULONG Unknown2
+       );
+
+
 /*
  * FUNCTION: Returns information about the subkeys of an open key
  * ARGUMENTS:
@@ -1202,14 +1485,14 @@ NTSTATUS STDCALL ZwFreeVirtualMemory(IN HANDLE ProcessHandle,
  *       IoStatusBlock = Caller should supply storage for 
  *        IoControlCode = Contains the File System Control command. This is an 
  *                     index to the structures in InputBuffer and OutputBuffer.
- *             FSCTL_GET_RETRIEVAL_POINTERS    MAPPING_PAIR
- *             FSCTL_GET_RETRIEVAL_POINTERS    GET_RETRIEVAL_DESCRIPTOR
- *             FSCTL_GET_VOLUME_BITMAP         BITMAP_DESCRIPTOR
- *             FSCTL_MOVE_FILE                 MOVEFILE_DESCRIPTOR
+ *             FSCTL_GET_RETRIEVAL_POINTERS  [Input/Output] RETRIEVAL_POINTERS_BUFFER
+ *             FSCTL_GET_VOLUME_BITMAP       [Input]        STARTING_LCN_INPUT_BUFFER
+ *             FSCTL_GET_VOLUME_BITMAP       [Output]       VOLUME_BITMAP_BUFFER
+ *             FSCTL_MOVE_FILE               [Input]        MOVE_FILE_DATA
  *
- *       InputBuffer = Caller should supply storage for input buffer if FCTL expects one.
+ *       InputBuffer = Caller should supply storage for input buffer if FSCTL expects one.
  *       InputBufferSize = Size of the input bufffer
- *        OutputBuffer = Caller should supply storage for output buffer if FCTL expects one.
+ *        OutputBuffer = Caller should supply storage for output buffer if FSCTL expects one.
  *        OutputBufferSize  = Size of the input bufffer
  * RETURNS: Status [ STATUS_SUCCESS | STATUS_PENDING | STATUS_ACCESS_DENIED | STATUS_INSUFFICIENT_RESOURCES |
  *             STATUS_INVALID_PARAMETER | STATUS_INVALID_DEVICE_REQUEST ]
@@ -1248,24 +1531,33 @@ ZwFsControlFile(
  * FUNCTION: Retrieves the processor context of a thread
  * ARGUMENTS:
  *        ThreadHandle = Handle to a thread
- *        Context (OUT) = Caller allocated storage for the processor context
+ *        ThreadContext (OUT) = Caller allocated storage for the processor context
  * RETURNS: Status 
  */
 
 NTSTATUS
 STDCALL 
 NtGetContextThread(
-       IN HANDLE ThreadHandle, 
-       OUT PCONTEXT Context
+       IN HANDLE ThreadHandle,
+       OUT PCONTEXT ThreadContext
        );
 
 NTSTATUS
 STDCALL 
 ZwGetContextThread(
-       IN HANDLE ThreadHandle, 
-       OUT PCONTEXT Context
+       IN HANDLE ThreadHandle,
+       OUT PCONTEXT ThreadContext
        );
 
+
+NTSTATUS STDCALL
+NtImpersonateClientOfPort (HANDLE PortHandle,
+                          PLPC_MESSAGE ClientMessage);
+
+NTSTATUS STDCALL
+ZwImpersonateClientOfPort (HANDLE PortHandle,
+                          PLPC_MESSAGE ClientMessage);
+
 /*
  * FUNCTION: Sets a thread to impersonate another 
  * ARGUMENTS:
@@ -1291,6 +1583,23 @@ ZwImpersonateThread(
        IN PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService
        );
 
+NTSTATUS
+STDCALL
+NtInitiatePowerAction (
+       IN POWER_ACTION SystemAction,
+       IN SYSTEM_POWER_STATE MinSystemState,
+       IN ULONG Flags,
+       IN BOOLEAN Asynchronous
+);
+
+NTSTATUS
+STDCALL
+ZwInitiatePowerAction (
+       IN POWER_ACTION SystemAction,
+       IN SYSTEM_POWER_STATE MinSystemState,
+       IN ULONG Flags,
+       IN BOOLEAN Asynchronous
+);
 /*
  * FUNCTION: Initializes the registry.
  * ARGUMENTS:
@@ -1308,6 +1617,29 @@ ZwInitializeRegistry(
        BOOLEAN SetUpBoot
        );
 
+NTSTATUS
+STDCALL
+NtIsProcessInJob(
+       IN HANDLE ProcessHandle,  // ProcessHandle must grant PROCESS_QUERY_INFORMATION access.
+       IN HANDLE JobHandle OPTIONAL    // JobHandle must JOB_OBJECT_QUERY grant access. Defaults to the current process's job object.
+       );
+
+NTSTATUS
+STDCALL
+ZwIsProcessInJob(
+       IN HANDLE ProcessHandle,  // ProcessHandle must grant PROCESS_QUERY_INFORMATION access.
+       IN HANDLE JobHandle OPTIONAL    // JobHandle must JOB_OBJECT_QUERY grant access. Defaults to the current process's job object. 
+       );
+
+NTSTATUS STDCALL
+NtListenPort (HANDLE PortHandle,
+             PLPC_MESSAGE LpcMessage);
+
+NTSTATUS STDCALL
+ZwListenPort (HANDLE PortHandle,
+             PLPC_MESSAGE LpcMessage);
+
+
 /*
  * FUNCTION: Loads a driver. 
  * ARGUMENTS: 
@@ -1385,16 +1717,29 @@ ZwLockFile(
  * RETURNS: Status
  */    
 
+
+NTSTATUS
+STDCALL
+NtMakePermanentObject(
+       IN HANDLE ObjectHandle
+       );
+
+NTSTATUS
+STDCALL
+ZwMakePermanentObject(
+       IN HANDLE ObjectHandle
+       );
+
 NTSTATUS
 STDCALL
 NtMakeTemporaryObject(
-       IN HANDLE Handle 
+       IN HANDLE ObjectHandle
        );
 
 NTSTATUS
 STDCALL
 ZwMakeTemporaryObject(
-       IN HANDLE Handle 
+       IN HANDLE ObjectHandle
        );
 /*
  * FUNCTION: Maps a view of a section into the virtual address space of a 
@@ -1542,10 +1887,10 @@ NtNotifyChangeKey(
        IN PVOID ApcContext OPTIONAL, 
        OUT PIO_STATUS_BLOCK IoStatusBlock,
        IN ULONG CompletionFilter,
-       IN BOOLEAN Asynchroneous, 
-       OUT PVOID ChangeBuffer,
+       IN BOOLEAN WatchSubtree,
+       OUT PVOID Buffer,
        IN ULONG Length,
-       IN BOOLEAN WatchSubtree
+       IN BOOLEAN Asynchronous
        );
 
 NTSTATUS
@@ -1557,10 +1902,10 @@ ZwNotifyChangeKey(
        IN PVOID ApcContext OPTIONAL, 
        OUT PIO_STATUS_BLOCK IoStatusBlock,
        IN ULONG CompletionFilter,
-       IN BOOLEAN Asynchroneous, 
-       OUT PVOID ChangeBuffer,
+       IN BOOLEAN WatchSubtree,
+       OUT PVOID Buffer,
        IN ULONG Length,
-       IN BOOLEAN WatchSubtree
+       IN BOOLEAN Asynchronous
        );
 
 /*
@@ -1692,7 +2037,23 @@ ZwOpenIoCompletion(
        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
+       );
 /*
  * FUNCTION: Opens an existing key in the registry
  * ARGUMENTS:
@@ -1791,6 +2152,25 @@ ZwOpenProcessToken(
        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
+    );
 /*
  * FUNCTION: Opens an existing section object
  * ARGUMENTS:
@@ -1825,14 +2205,14 @@ ZwOpenSection(
 NTSTATUS
 STDCALL
 NtOpenSemaphore(
-       IN HANDLE SemaphoreHandle,
+       OUT PHANDLE SemaphoreHandle,
        IN ACCESS_MASK DesiredAcces,
        IN POBJECT_ATTRIBUTES ObjectAttributes
        );
 NTSTATUS
 STDCALL
 ZwOpenSemaphore(
-       IN HANDLE SemaphoreHandle,
+       OUT PHANDLE SemaphoreHandle,
        IN ACCESS_MASK DesiredAcces,
        IN POBJECT_ATTRIBUTES ObjectAttributes
        );
@@ -1847,14 +2227,14 @@ ZwOpenSemaphore(
 NTSTATUS
 STDCALL
 NtOpenSymbolicLinkObject(
-       OUT PHANDLE SymbolicLinkHandle,
+       OUT PHANDLE LinkHandle,
        IN ACCESS_MASK DesiredAccess,
        IN POBJECT_ATTRIBUTES ObjectAttributes
        );
 NTSTATUS
 STDCALL
 ZwOpenSymbolicLinkObject(
-       OUT PHANDLE SymbolicLinkHandle,
+       OUT PHANDLE LinkHandle,
        IN ACCESS_MASK DesiredAccess,
        IN POBJECT_ATTRIBUTES ObjectAttributes
        );
@@ -1901,6 +2281,28 @@ ZwOpenThreadToken(
        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
+    );
+
 /*
  * FUNCTION: Opens an existing timer
  * ARGUMENTS:
@@ -1935,6 +2337,27 @@ ZwOpenTimer(
  * RETURNS: Status
  */
 
+
+NTSTATUS 
+STDCALL 
+NtPowerInformation(
+       IN POWER_INFORMATION_LEVEL PowerInformationLevel,
+       IN PVOID InputBuffer  OPTIONAL,
+       IN ULONG InputBufferLength,
+       OUT PVOID OutputBuffer  OPTIONAL,
+       IN ULONG OutputBufferLength
+       );
+
+NTSTATUS 
+STDCALL 
+ZwPowerInformation(
+       IN POWER_INFORMATION_LEVEL PowerInformationLevel,
+       IN PVOID InputBuffer  OPTIONAL,
+       IN ULONG InputBufferLength,
+       OUT PVOID OutputBuffer  OPTIONAL,
+       IN ULONG OutputBufferLength
+       );
+
 NTSTATUS
 STDCALL
 NtPrivilegeCheck(
@@ -2019,14 +2442,14 @@ NTSTATUS
 STDCALL
 NtPulseEvent(
        IN HANDLE EventHandle,
-       IN PULONG PulseCount OPTIONAL
+       OUT PLONG PreviousState OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwPulseEvent(
        IN HANDLE EventHandle,
-       IN PULONG PulseCount OPTIONAL
+       OUT PLONG PreviousState OPTIONAL
        );
 
 /*
@@ -2037,14 +2460,48 @@ ZwPulseEvent(
  * RETURNS: Status
  */
 
-NTSTATUS STDCALL
-NtQueryAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes,
-                     OUT PFILE_BASIC_INFORMATION FileInformation);
+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
+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
+       );
 /*
  * FUNCTION: Queries the default locale id
  * ARGUMENTS:
@@ -2069,6 +2526,18 @@ ZwQueryDefaultLocale(
        OUT PLCID DefaultLocaleId
        );
 
+NTSTATUS 
+STDCALL 
+NtQueryDefaultUILanguage(
+       PLANGID LanguageId
+       );
+
+NTSTATUS 
+STDCALL 
+ZwQueryDefaultUILanguage(
+       PLANGID LanguageId
+       );
+
 /*
  * FUNCTION: Queries a directory file.
  * ARGUMENTS:
@@ -2189,7 +2658,7 @@ NtQueryEvent(
        IN EVENT_INFORMATION_CLASS EventInformationClass,
        OUT PVOID EventInformation,
        IN ULONG EventInformationLength,
-       OUT PULONG ReturnLength
+       OUT PULONG ReturnLength  OPTIONAL
        );
 NTSTATUS
 STDCALL
@@ -2198,7 +2667,7 @@ ZwQueryEvent(
        IN EVENT_INFORMATION_CLASS EventInformationClass,
        OUT PVOID EventInformation,
        IN ULONG EventInformationLength,
-       OUT PULONG ReturnLength
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 NTSTATUS STDCALL
@@ -2233,7 +2702,7 @@ ZwQueryFullAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes,
          FileNamesInformation                  FILE_NAMES_INFORMATION
          FileDispositionInformation            FILE_DISPOSITION_INFORMATION
          FilePositionInformation               FILE_POSITION_INFORMATION
-         FileFullEaInformation                 FILE_FULL_EA_INFORMATION                
+         FileFullEaInformation                 FILE_FULL_EA_INFORMATION
          FileModeInformation                   FILE_MODE_INFORMATION
          FileAlignmentInformation              FILE_ALIGNMENT_INFORMATION
          FileAllInformation                    FILE_ALL_INFORMATION
@@ -2246,7 +2715,7 @@ ZwQueryFullAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes,
          FilePipeRemoteInformation             
          FileMailslotQueryInformation          
          FileMailslotSetInformation            
-         FileCompressionInformation            FILE_COMPRESSION_INFORMATION            
+         FileCompressionInformation            FILE_COMPRESSION_INFORMATION
          FileCopyOnWriteInformation            
          FileCompletionInformation             IO_COMPLETION_CONTEXT
          FileMoveClusterInformation            
@@ -2259,7 +2728,7 @@ ZwQueryFullAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes,
          FileContentIndexInformation           
          FileInheritContentIndexInformation    
          FileOleInformation                    
-         FileMaximumInformation                        
+         FileMaximumInformation                
 
  * REMARK:
  *       This procedure maps to the win32 GetShortPathName, GetLongPathName,
@@ -2286,6 +2755,41 @@ ZwQueryInformationFile(
        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);
+
+#ifndef __USE_W32API
+NTSTATUS STDCALL
+ZwQueryInformationPort (HANDLE PortHandle,
+                       CINT PortInformationClass,
+                       PVOID PortInformation,
+                       ULONG PortInformationLength,
+                       PULONG ReturnLength);
+#endif
 
 /*
  * FUNCTION: Queries the information of a thread object.
@@ -2329,7 +2833,17 @@ NtQueryInformationThread(
        IN THREADINFOCLASS ThreadInformationClass,
        OUT PVOID ThreadInformation,
        IN ULONG ThreadInformationLength,
-       OUT PULONG ReturnLength 
+       OUT PULONG ReturnLength  OPTIONAL
+       );
+
+NTSTATUS 
+STDCALL 
+ZwQueryInformationThread(
+       IN HANDLE ThreadHandle,
+       IN THREADINFOCLASS ThreadInformationClass,
+       OUT PVOID ThreadInformation,
+       IN ULONG ThreadInformationLength,
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 
@@ -2353,6 +2867,18 @@ ZwQueryInformationToken(
        OUT PULONG ReturnLength
        );
 
+NTSTATUS 
+STDCALL 
+NtQueryInstallUILanguage(
+       PLANGID LanguageId
+       );
+
+NTSTATUS 
+STDCALL 
+ZwQueryInstallUILanguage(
+       PLANGID LanguageId
+       );
+
 NTSTATUS
 STDCALL
 NtQueryIoCompletion(
@@ -2403,6 +2929,35 @@ ZwQueryKey(
        );
 
 
+
+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
+    );
 // draft
 
 NTSTATUS
@@ -2440,27 +2995,27 @@ NTSTATUS
 STDCALL
 NtQueryMutant(
        IN HANDLE MutantHandle,
-       IN CINT MutantInformationClass,
+       IN MUTANT_INFORMATION_CLASS MutantInformationClass,
        OUT PVOID MutantInformation,
-       IN ULONG Length,
-       OUT PULONG ResultLength
+       IN ULONG MutantInformationLength,
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwQueryMutant(
        IN HANDLE MutantHandle,
-       IN CINT MutantInformationClass,
+       IN MUTANT_INFORMATION_CLASS MutantInformationClass,
        OUT PVOID MutantInformation,
-       IN ULONG Length,
-       OUT PULONG ResultLength
+       IN ULONG MutantInformationLength,
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 /*
  * FUNCTION: Queries the system ( high-resolution ) performance counter.
  * ARGUMENTS: 
- *        Counter = Performance counter
- *       Frequency = Performance frequency
+ *        PerformanceCounter = Performance counter
+ *       PerformanceFrequency = Performance frequency
  * REMARKS:
        This procedure queries a tick count faster than 10ms ( The resolution for  Intel®-based CPUs is about 0.8 microseconds.)
        This procedure maps to the win32 QueryPerformanceCounter, QueryPerformanceFrequency 
@@ -2470,15 +3025,15 @@ ZwQueryMutant(
 NTSTATUS
 STDCALL
 NtQueryPerformanceCounter(
-       IN PLARGE_INTEGER Counter,
-       IN PLARGE_INTEGER Frequency
+       OUT PLARGE_INTEGER PerformanceCounter,
+       OUT PLARGE_INTEGER PerformanceFrequency  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwQueryPerformanceCounter(
-       IN PLARGE_INTEGER Counter,
-       IN PLARGE_INTEGER Frequency
+       OUT PLARGE_INTEGER PerformanceCounter,
+       OUT PLARGE_INTEGER PerformanceFrequency  OPTIONAL
        );
 
 /*
@@ -2499,7 +3054,7 @@ NtQuerySemaphore(
        IN      SEMAPHORE_INFORMATION_CLASS     SemaphoreInformationClass,
        OUT     PVOID                           SemaphoreInformation,
        IN      ULONG                           Length,
-       OUT     PULONG                          ReturnLength
+       OUT     PULONG                          ReturnLength  OPTIONAL
        );
 
 NTSTATUS
@@ -2509,7 +3064,7 @@ ZwQuerySemaphore(
        IN      SEMAPHORE_INFORMATION_CLASS     SemaphoreInformationClass,
        OUT     PVOID                           SemaphoreInformation,
        IN      ULONG                           Length,
-       OUT     PULONG                          ReturnLength
+       OUT     PULONG                          ReturnLength  OPTIONAL
        );
 
 
@@ -2525,17 +3080,17 @@ ZwQuerySemaphore(
 NTSTATUS
 STDCALL
 NtQuerySymbolicLinkObject(
-       IN HANDLE               SymLinkObjHandle,
+       IN HANDLE               LinkHandle,
        OUT PUNICODE_STRING     LinkTarget,
-       OUT PULONG              DataWritten OPTIONAL
+       OUT PULONG              ResultLength  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwQuerySymbolicLinkObject(
-       IN HANDLE               SymLinkObjHandle,
-       OUT PUNICODE_STRING     LinkName,
-       OUT PULONG              DataWritten OPTIONAL
+       IN HANDLE               LinkHandle,
+       OUT PUNICODE_STRING     LinkTarget,
+       OUT PULONG              ResultLength  OPTIONAL
        ); 
 
 
@@ -2552,19 +3107,19 @@ ZwQuerySymbolicLinkObject(
 NTSTATUS
 STDCALL
 NtQuerySystemEnvironmentValue(
-       IN PUNICODE_STRING Name,
-       OUT PVOID Value,
-       ULONG Length,
-       PULONG ReturnLength
+       IN PUNICODE_STRING VariableName,
+       OUT PWCHAR ValueBuffer,
+       IN ULONG ValueBufferLength,
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwQuerySystemEnvironmentValue(
-       IN PUNICODE_STRING Name,
-       OUT PVOID Value,
-       ULONG Length,
-       PULONG ReturnLength
+       IN PUNICODE_STRING VariableName,
+       OUT PWCHAR ValueBuffer,
+       IN ULONG ValueBufferLength,
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 
@@ -2616,19 +3171,19 @@ NTSTATUS
 STDCALL
 NtQueryTimer(
        IN HANDLE TimerHandle,
-       IN CINT TimerInformationClass,
+       IN TIMER_INFORMATION_CLASS TimerInformationClass,
        OUT PVOID TimerInformation,
-       IN ULONG Length,
-       OUT PULONG ResultLength
+       IN ULONG TimerInformationLength,
+       OUT PULONG ReturnLength  OPTIONAL
        );
 NTSTATUS
 STDCALL
 ZwQueryTimer(
        IN HANDLE TimerHandle,
-       IN CINT TimerInformationClass,
+       IN TIMER_INFORMATION_CLASS TimerInformationClass,
        OUT PVOID TimerInformation,
-       IN ULONG Length,
-       OUT PULONG ResultLength
+       IN ULONG TimerInformationLength,
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 /*
@@ -2857,34 +3412,53 @@ ZwReadFile(
          Key =  Key = If a range is lock a matching key will allow the read to continue.
  * RETURNS: Status
  *
-*/       
+*/
 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  
-       ); 
+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  
-       ); 
+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);
+
+
 /*
  * FUNCTION: Copies a range of virtual memory to a buffer
  * ARGUMENTS: 
@@ -2925,12 +3499,12 @@ ZwReadVirtualMemory(
 NTSTATUS
 STDCALL        
 NtRegisterThreadTerminatePort(
-       HANDLE TerminationPort
+       HANDLE PortHandle
        );
 NTSTATUS
 STDCALL        
 ZwRegisterThreadTerminatePort(
-       HANDLE TerminationPort
+       HANDLE PortHandle
        );
 
 /*
@@ -2944,14 +3518,14 @@ NTSTATUS
 STDCALL        
 NtReleaseMutant(
        IN HANDLE MutantHandle,
-       IN PULONG ReleaseCount OPTIONAL
+       IN PLONG PreviousCount  OPTIONAL
        );
 
 NTSTATUS
 STDCALL        
 ZwReleaseMutant(
        IN HANDLE MutantHandle,
-       IN PULONG ReleaseCount OPTIONAL
+       IN PLONG PreviousCount  OPTIONAL
        );
 
 /*
@@ -2967,7 +3541,7 @@ STDCALL
 NtReleaseSemaphore(
        IN      HANDLE  SemaphoreHandle,
        IN      LONG    ReleaseCount,
-       OUT     PLONG   PreviousCount
+       OUT     PLONG   PreviousCount  OPTIONAL
        );
 
 NTSTATUS
@@ -2975,7 +3549,7 @@ STDCALL
 ZwReleaseSemaphore(
        IN      HANDLE  SemaphoreHandle,
        IN      LONG    ReleaseCount,
-       OUT     PLONG   PreviousCount
+       OUT     PLONG   PreviousCount  OPTIONAL
        );
 
 /*
@@ -2992,8 +3566,8 @@ NTSTATUS
 STDCALL
 NtRemoveIoCompletion(
    IN  HANDLE           IoCompletionHandle,
-   OUT PULONG           CompletionKey,
-   OUT PULONG           CompletionValue,
+   OUT PVOID           *CompletionKey,
+   OUT PVOID           *CompletionContext,
    OUT PIO_STATUS_BLOCK IoStatusBlock,
    IN  PLARGE_INTEGER   Timeout OPTIONAL
    );
@@ -3002,8 +3576,8 @@ NTSTATUS
 STDCALL
 ZwRemoveIoCompletion(
    IN  HANDLE           IoCompletionHandle,
-   OUT PULONG           CompletionKey,
-   OUT PULONG           CompletionValue,
+   OUT PVOID           *CompletionKey,
+   OUT PVOID           *CompletionValue,
    OUT PIO_STATUS_BLOCK IoStatusBlock,
    IN  PLARGE_INTEGER   Timeout OPTIONAL
    );
@@ -3019,18 +3593,69 @@ ZwRemoveIoCompletion(
 NTSTATUS
 STDCALL
 NtReplaceKey(
-       IN POBJECT_ATTRIBUTES ObjectAttributes, 
+       IN POBJECT_ATTRIBUTES ObjectAttributes,
        IN HANDLE Key,
-       IN POBJECT_ATTRIBUTES ReplacedObjectAttributes 
+       IN POBJECT_ATTRIBUTES ReplacedObjectAttributes
        );
 NTSTATUS
 STDCALL
 ZwReplaceKey(
-       IN POBJECT_ATTRIBUTES ObjectAttributes, 
+       IN POBJECT_ATTRIBUTES ObjectAttributes,
        IN HANDLE Key,
-       IN POBJECT_ATTRIBUTES ReplacedObjectAttributes 
+       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);
+
 /*
  * FUNCTION: Resets a event to a non signaled state 
  * ARGUMENTS: 
@@ -3042,13 +3667,13 @@ NTSTATUS
 STDCALL
 NtResetEvent(
        HANDLE EventHandle,
-       PULONG NumberOfWaitingThreads OPTIONAL
+       OUT PLONG PreviousState OPTIONAL
        );
 NTSTATUS
 STDCALL
 ZwResetEvent(
        HANDLE EventHandle,
-       PULONG NumberOfWaitingThreads OPTIONAL
+       OUT PLONG PreviousState OPTIONAL
        );
 //draft
 NTSTATUS
@@ -3080,13 +3705,13 @@ NTSTATUS
 STDCALL
 NtResumeThread(
        IN HANDLE ThreadHandle,
-       OUT PULONG SuspendCount
+       OUT PULONG SuspendCount  OPTIONAL
        );
 NTSTATUS
 STDCALL
 ZwResumeThread(
        IN HANDLE ThreadHandle,
-       OUT PULONG SuspendCount
+       OUT PULONG SuspendCount  OPTIONAL
        );
 /*
  * FUNCTION: Writes the content of a registry key to ascii file
@@ -3111,11 +3736,56 @@ ZwSaveKey(
        IN HANDLE FileHandle
        );
 
+NTSTATUS
+STDCALL
+NtSaveKeyEx(
+       IN HANDLE KeyHandle,
+       IN HANDLE FileHandle,
+       IN ULONG Flags // REG_STANDARD_FORMAT, etc..
+       );
+
+NTSTATUS
+STDCALL
+ZwSaveKeyEx(
+       IN HANDLE KeyHandle,
+       IN HANDLE FileHandle,
+       IN ULONG Flags // REG_STANDARD_FORMAT, etc..
+       );
+
+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
+       );
+
+
 /*
  * FUNCTION: Sets the context of a specified thread.
  * ARGUMENTS: 
  *        ThreadHandle = Handle to the thread
- *        Context =  The processor context.
+ *        ThreadContext =  The processor context.
  * RETURNS: Status
  */
 
@@ -3123,13 +3793,13 @@ NTSTATUS
 STDCALL
 NtSetContextThread(
        IN HANDLE ThreadHandle,
-       IN PCONTEXT Context
+       IN PCONTEXT ThreadContext
        );
 NTSTATUS
 STDCALL
 ZwSetContextThread(
        IN HANDLE ThreadHandle,
-       IN PCONTEXT Context
+       IN PCONTEXT ThreadContext
        );
 
 /*
@@ -3156,6 +3826,17 @@ ZwSetDefaultLocale(
        IN LCID DefaultLocaleId
        );
 
+NTSTATUS 
+STDCALL 
+NtSetDefaultUILanguage(
+       LANGID LanguageId
+       );
+
+NTSTATUS 
+STDCALL 
+ZwSetDefaultUILanguage(
+       LANGID LanguageId
+       );
 /*
  * FUNCTION: Sets the default hard error port
  * ARGUMENTS:
@@ -3217,14 +3898,14 @@ NTSTATUS
 STDCALL
 NtSetEvent(
        IN HANDLE EventHandle,
-       PULONG NumberOfThreadsReleased
+       OUT PLONG PreviousState  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwSetEvent(
        IN HANDLE EventHandle,
-       PULONG NumberOfThreadsReleased
+       OUT PLONG PreviousState  OPTIONAL
        );
 
 /*
@@ -3303,6 +3984,23 @@ ZwSetInformationFile(
        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
+       );
 /*
  * FUNCTION: Changes a set of thread specific parameters
  * ARGUMENTS: 
@@ -3395,8 +4093,8 @@ NTSTATUS
 STDCALL
 NtSetIoCompletion(
    IN HANDLE   IoCompletionPortHandle,
-   IN ULONG    CompletionKey,
-   IN ULONG    CompletionValue,
+   IN PVOID    CompletionKey,
+   IN PVOID    CompletionContext,
    IN NTSTATUS CompletionStatus,
    IN ULONG    CompletionInformation
    );
@@ -3405,8 +4103,8 @@ NTSTATUS
 STDCALL
 ZwSetIoCompletion(
    IN HANDLE   IoCompletionPortHandle,
-   IN ULONG    CompletionKey,
-   IN ULONG    CompletionValue,
+   IN PVOID    CompletionKey,
+   IN PVOID    CompletionContext,
    IN NTSTATUS CompletionStatus,
    IN ULONG    CompletionInformation
    );
@@ -3469,6 +4167,59 @@ ZwSetLowWaitHighEventPair(
        HANDLE EventPair
        );
 
+/* NtSetLowWaitHighThread effectively invokes NtSetLowWaitHighEventPair on the
+ * event pair of the thread.
+ */
+NTSTATUS
+STDCALL
+NtSetLowWaitHighThread(
+       VOID
+       );
+/* ZwSetLowWaitHighThread effectively invokes ZwSetLowWaitHighEventPair on the
+ * event pair of the thread.
+ */
+NTSTATUS
+STDCALL
+ZwSetLowWaitHighThread(
+       VOID
+       );
+
+/* NtSetHighWaitLowThread effectively invokes NtSetHighWaitLowEventPair on the
+ * event pair of the thread.
+ */
+NTSTATUS
+STDCALL
+NtSetHighWaitLowThread(
+       VOID
+       );
+
+/* ZwSetHighWaitLowThread effectively invokes ZwSetHighWaitLowEventPair on the
+ * event pair of the thread.
+ */
+NTSTATUS
+STDCALL
+ZwSetHighWaitLowThread(
+       VOID
+       );
+
+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(
@@ -3564,16 +4315,16 @@ ZwSetSystemTime(
 NTSTATUS
 STDCALL
 NtSetTimerResolution(
-       IN ULONG RequestedResolution,
-       IN BOOL SetOrUnset,
-       OUT PULONG ActualResolution
+       IN ULONG DesiredResolution,
+       IN BOOLEAN SetResolution,
+       OUT PULONG CurrentResolution
        );
 NTSTATUS
 STDCALL
 ZwSetTimerResolution(
-       IN ULONG RequestedResolution,
-       IN BOOL SetOrUnset,
-       OUT PULONG ActualResolution
+       IN ULONG DesiredResolution,
+       IN BOOLEAN SetResolution,
+       OUT PULONG CurrentResolution
        );
 
 /*
@@ -3669,12 +4420,36 @@ ZwShutdownSystem(
        IN SHUTDOWN_ACTION Action
        );
 
+/*
+ * FUNCTION: Signals an object and wait for an other one.
+ * ARGUMENTS: 
+ *        SignalObject = Handle to the object that should be signaled
+ *        WaitObject = Handle to the object that should be waited for
+ *        Alertable = True if the wait is alertable
+ *        Time = The time to wait
+ * RETURNS: Status
+ */
+NTSTATUS
+STDCALL
+NtSignalAndWaitForSingleObject(
+       IN      HANDLE          SignalObject,
+       IN      HANDLE          WaitObject,
+       IN      BOOLEAN         Alertable,
+       IN      PLARGE_INTEGER  Time
+       );
 
-/* --- PROFILING --- */
+NTSTATUS
+STDCALL
+NtSignalAndWaitForSingleObject(
+       IN      HANDLE          SignalObject,
+       IN      HANDLE          WaitObject,
+       IN      BOOLEAN         Alertable,
+       IN      PLARGE_INTEGER  Time
+       );
 
 /*
  * FUNCTION: Starts profiling
- * ARGUMENTS: 
+ * ARGUMENTS:
  *       ProfileHandle = Handle to the profile
  * RETURNS: Status
  */
@@ -3693,9 +4468,9 @@ ZwStartProfile(
 
 /*
  * FUNCTION: Stops profiling
- * ARGUMENTS: 
+ * ARGUMENTS:
  *       ProfileHandle = Handle to the profile
- * RETURNS: Status    
+ * RETURNS: Status
  */
 
 NTSTATUS
@@ -3719,26 +4494,72 @@ ZwStopProfile(
  *      ThreadHandle = Handle to the process
  *      ExitStatus  = The exit status of the process to terminate with.
  * REMARKS
-       Native applications should kill themselves using this function.
*      Native applications should kill themselves using this function.
  * RETURNS: Status
- */    
+ */
 NTSTATUS 
 STDCALL 
 NtTerminateProcess(
-       IN HANDLE ProcessHandle ,
+       IN HANDLE ProcessHandle  OPTIONAL,
        IN NTSTATUS ExitStatus
        );
 NTSTATUS 
 STDCALL 
 ZwTerminateProcess(
-       IN HANDLE ProcessHandle ,
+       IN HANDLE ProcessHandle  OPTIONAL,
        IN NTSTATUS ExitStatus
        );
 
-/* --- DEVICE DRIVER CONTROL --- */
+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
+       );
 /*
- * FUNCTION: Unloads a driver. 
+ * FUNCTION: Unloads a driver.
  * ARGUMENTS: 
  *      DriverServiceName = Name of the driver to unload
  * RETURNS: Status
@@ -3754,7 +4575,45 @@ ZwUnloadDriver(
        IN PUNICODE_STRING DriverServiceName
        );
 
-/* --- VIRTUAL MEMORY MANAGEMENT --- */
+/*
+ * FUNCTION: Unmaps a piece of virtual memory backed by a file. 
+ * ARGUMENTS: 
+ *       ProcessHandle = Handle to the process
+ *       BaseAddress =  The address where the mapping begins
+ * REMARK:
+       This procedure maps to the win32 UnMapViewOfFile
+ * RETURNS: Status
+ */
+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);
+
 
 /*
  * FUNCTION: Writes a range of virtual memory
@@ -3788,56 +4647,6 @@ ZwWriteVirtualMemory(
        OUT PULONG NumberOfBytesWritten
        );
 
-/*
- * FUNCTION: Unmaps a piece of virtual memory backed by a file. 
- * ARGUMENTS: 
- *       ProcessHandle = Handle to the process
- *       BaseAddress =  The address where the mapping begins
- * REMARK:
-       This procedure maps to the win32 UnMapViewOfFile
- * RETURNS: Status
- */
-NTSTATUS
-STDCALL
-NtUnmapViewOfSection(
-       IN HANDLE ProcessHandle,
-       IN PVOID BaseAddress
-       );
-NTSTATUS
-STDCALL
-ZwUnmapViewOfSection(
-       IN HANDLE ProcessHandle,
-       IN PVOID BaseAddress
-       );
-
-/* --- OBJECT SYNCHRONIZATION --- */
-
-/*
- * FUNCTION: Signals an object and wait for an other one.
- * ARGUMENTS: 
- *        SignalObject = Handle to the object that should be signaled
- *        WaitObject = Handle to the object that should be waited for
- *        Alertable = True if the wait is alertable
- *        Time = The time to wait
- * RETURNS: Status
- */
-NTSTATUS
-STDCALL
-NtSignalAndWaitForSingleObject(
-       IN      HANDLE          SignalObject,
-       IN      HANDLE          WaitObject,
-       IN      BOOLEAN         Alertable,
-       IN      PLARGE_INTEGER  Time
-       );
-
-NTSTATUS
-STDCALL
-NtSignalAndWaitForSingleObject(
-       IN      HANDLE          SignalObject,
-       IN      HANDLE          WaitObject,
-       IN      BOOLEAN         Alertable,
-       IN      PLARGE_INTEGER  Time
-       );
 
 /*
  * FUNCTION: Waits for an object to become signalled.
@@ -4060,14 +4869,14 @@ NTSTATUS
 STDCALL 
 NtSuspendThread(
        IN HANDLE ThreadHandle,
-       IN PULONG PreviousSuspendCount 
+       OUT PULONG PreviousSuspendCount  OPTIONAL
        );
 
 NTSTATUS 
 STDCALL 
 ZwSuspendThread(
        IN HANDLE ThreadHandle,
-       IN PULONG PreviousSuspendCount 
+       OUT PULONG PreviousSuspendCount  OPTIONAL
        );
 
 /*
@@ -4120,26 +4929,14 @@ ZwYieldExecution(
        VOID
        );
 
-/* --- PLUG AND PLAY --- */
-
-NTSTATUS
-STDCALL
-NtPlugPlayControl (
-       VOID
-       );
-
-NTSTATUS
-STDCALL
-NtGetPlugPlayEvent (
-       VOID
-       );
-
 /* --- POWER MANAGEMENT --- */
 
+#ifndef __USE_W32API
 NTSTATUS STDCALL 
 NtSetSystemPowerState(IN POWER_ACTION SystemAction,
                      IN SYSTEM_POWER_STATE MinSystemState,
                      IN ULONG Flags);
+#endif
 
 /* --- DEBUG SUBSYSTEM --- */
 
@@ -4210,17 +5007,10 @@ NtSetContextChannel (
 //NTSTATUS STDCALL NtSetLdtEntries(VOID);
 NTSTATUS
 STDCALL
-NtSetLdtEntries (
-       HANDLE  Thread,
-       ULONG           FirstEntry,
-       PULONG  Entries
-       );
-
-NTSTATUS
-STDCALL
-NtQueryOleDirectoryFile (
-       VOID
-       );
+NtSetLdtEntries (ULONG Selector1,
+                LDT_ENTRY LdtEntry1,
+                ULONG Selector2,
+                LDT_ENTRY LdtEntry2);
 
 /*
  * FUNCTION: Checks a clients access rights to a object
@@ -4233,7 +5023,10 @@ NtQueryOleDirectoryFile (
  *       ReturnLength = Bytes written
  *       GrantedAccess = 
  *       AccessStatus = Indicates if the ClientToken allows the requested access
- * REMARKS: The arguments map to the win32 AccessCheck 
+ * REMARKS: The arguments map to the win32 AccessCheck
+ *      Gary Nebbett is wrong:
+ *        The 7th argument is a PACCESS_MASK, not a PULONG.
+ *        The 8th argument is a PNTSTATUS, not a PBOOLEAN.
  * RETURNS: Status
  */
 
@@ -4246,8 +5039,8 @@ NtAccessCheck(
        IN PGENERIC_MAPPING GenericMapping,
        OUT PPRIVILEGE_SET PrivilegeSet,
        OUT PULONG ReturnLength,
-       OUT PULONG GrantedAccess,
-       OUT PBOOLEAN AccessStatus
+       OUT PACCESS_MASK GrantedAccess,
+       OUT PNTSTATUS AccessStatus
        );
 
 NTSTATUS
@@ -4259,8 +5052,8 @@ ZwAccessCheck(
        IN PGENERIC_MAPPING GenericMapping,
        OUT PPRIVILEGE_SET PrivilegeSet,
        OUT PULONG ReturnLength,
-       OUT PULONG GrantedAccess,
-       OUT PBOOLEAN AccessStatus
+       OUT PACCESS_MASK GrantedAccess,
+       OUT PNTSTATUS AccessStatus
        );
 
 NTSTATUS
@@ -4378,14 +5171,14 @@ NtCreatePagingFile(
 NTSTATUS 
 STDCALL
 NtCreateProfile(OUT PHANDLE ProfileHandle, 
-               IN HANDLE ProcessHandle,
+               IN HANDLE Process  OPTIONAL,
                IN PVOID ImageBase, 
                IN ULONG ImageSize, 
-               IN ULONG Granularity,
-               OUT PULONG Buffer, 
-               IN ULONG ProfilingSize,
-               IN KPROFILE_SOURCE Source,
-               IN ULONG ProcessorMask);
+               IN ULONG BucketSize,
+               IN PVOID Buffer,
+               IN ULONG BufferSize,
+               IN KPROFILE_SOURCE ProfileSource,
+               IN KAFFINITY Affinity);
 
 /*
  * FUNCTION: Creates a user mode thread
@@ -4411,7 +5204,7 @@ NtCreateThread(
        IN      HANDLE                  ProcessHandle,
        OUT     PCLIENT_ID              ClientId,
        IN      PCONTEXT                ThreadContext,
-       IN      PUSER_STACK             UserStack,
+       IN      PINITIAL_TEB            InitialTeb,
        IN      BOOLEAN                 CreateSuspended
        );
 
@@ -4426,8 +5219,8 @@ NtCreateThread(
 NTSTATUS
 STDCALL
 NtDelayExecution(
-       IN ULONG Alertable,
-       IN TIME *Interval
+       IN BOOLEAN Alertable,
+       IN PLARGE_INTEGER DelayInterval
        );
 
 /*
@@ -4441,7 +5234,7 @@ NTSTATUS
 STDCALL
 NtExtendSection(
        IN HANDLE SectionHandle,
-       IN ULONG NewMaximumSize
+       IN PLARGE_INTEGER NewMaximumSize
        );
 
 /*
@@ -4488,10 +5281,10 @@ NtFlushVirtualMemory(
  *        UpTime = Number of clock ticks since boot.
  * RETURNS: Status 
  */
-NTSTATUS
+ULONG
 STDCALL 
 NtGetTickCount(
-       PULONG UpTime
+       VOID
        );
 
 /*
@@ -4567,8 +5360,8 @@ NTSTATUS
 STDCALL
 NtProtectVirtualMemory(
        IN HANDLE ProcessHandle,
-       IN PVOID BaseAddress,
-       IN ULONG NumberOfBytesToProtect,
+       IN PVOID *BaseAddress,
+       IN ULONG *NumberOfBytesToProtect,
        IN ULONG NewAccessProtection,
        OUT PULONG OldAccessProtection
        );
@@ -4576,25 +5369,26 @@ NtProtectVirtualMemory(
 /*
  * FUNCTION: Query information about the content of a directory object
  * ARGUMENTS:
-       DirObjInformation =   Buffer must be large enough to hold the name strings too
-        GetNextIndex = If TRUE :return the index of the next object in this directory in ObjectIndex
-                      If FALSE:  return the number of objects in this directory in ObjectIndex
-        IgnoreInputIndex= If TRUE:  ignore input value of ObjectIndex  always start at index 0
-                         If FALSE use input value of ObjectIndex
-       ObjectIndex =   zero based index of object in the directory  depends on GetNextIndex and IgnoreInputIndex
-        DataWritten  = Actual size of the ObjectIndex ???
+       DirectoryHandle =
+       Buffer =   Buffer must be large enough to hold the name strings too
+        ReturnSingleEntry = If TRUE :return the index of the next object in this directory in ObjectIndex
+                           If FALSE:  return the number of objects in this directory in ObjectIndex
+        RestartScan = If TRUE:  ignore input value of ObjectIndex  always start at index 0
+                     If FALSE use input value of ObjectIndex
+       Context =   zero based index of object in the directory  depends on GetNextIndex and IgnoreInputIndex
+        ReturnLength  = Actual size of the ObjectIndex ???
  * RETURNS: Status
  */
 NTSTATUS
 STDCALL
 NtQueryDirectoryObject(
-       IN      HANDLE                  DirObjHandle,
-       OUT     POBJDIR_INFORMATION     DirObjInformation,
-       IN      ULONG                   BufferLength,
-       IN      BOOLEAN                 GetNextIndex,
-       IN      BOOLEAN                 IgnoreInputIndex,
-       IN OUT  PULONG                  ObjectIndex,
-       OUT     PULONG                  DataWritten OPTIONAL
+       IN      HANDLE  DirectoryHandle,
+       OUT     PVOID   Buffer,
+       IN      ULONG   BufferLength,
+       IN      BOOLEAN ReturnSingleEntry,
+       IN      BOOLEAN RestartScan,
+       IN OUT  PULONG  Context,
+       OUT     PULONG  ReturnLength OPTIONAL
        );
 
 /*
@@ -4607,8 +5401,8 @@ NtQueryDirectoryObject(
 NTSTATUS
 STDCALL
 NtQueryIntervalProfile(
-       OUT PULONG Interval,
-       OUT KPROFILE_SOURCE ClockSource
+       IN  KPROFILE_SOURCE ProfileSource,
+       OUT PULONG Interval
        );
 
 /*
@@ -4688,11 +5482,11 @@ NtRaiseHardError(
  * ARGUMENTS: 
  *       KeyHandle = Handle to the registry key
  *       KeyInformationClass =  Index to the a certain information structure.
                      Can be one of the following values:
-
- *      KeyWriteTimeInformation  KEY_WRITE_TIME_INFORMATION
-
       KeyInformation = Storage for the new information
*              Can be one of the following values:
+ *
+ *       KeyLastWriteTimeInformation  KEY_LAST_WRITE_TIME_INFORMATION
+ *
*       KeyInformation        = Storage for the new information
  *       KeyInformationLength = Size of the information strucure
  * RETURNS: Status
  */
@@ -4701,7 +5495,7 @@ NTSTATUS
 STDCALL
 NtSetInformationKey(
        IN HANDLE KeyHandle,
-       IN CINT KeyInformationClass,
+       IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
        IN PVOID KeyInformation,
        IN ULONG KeyInformationLength
        );
@@ -4712,12 +5506,7 @@ NtSetInformationKey(
  *      ObjectHandle = 
  *     ObjectInformationClass = Index to the set of parameters to change. 
 
-                       
-       ObjectBasicInformation          
-       ObjectTypeInformation           OBJECT_TYPE_INFORMATION 
-       ObjectAllInformation            
-       ObjectDataInformation           OBJECT_DATA_INFORMATION
-       ObjectNameInformation           OBJECT_NAME_INFORMATION 
+       ObjectHandleInformation         OBJECT_HANDLE_ATTRIBUTE_INFORMATION
 
 
  *      ObjectInformation = Caller supplies storage for parameters to set.
@@ -4728,7 +5517,7 @@ NTSTATUS
 STDCALL
 NtSetInformationObject(
        IN HANDLE ObjectHandle,
-       IN CINT ObjectInformationClass,
+       IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        IN PVOID ObjectInformation,
        IN ULONG Length 
        );
@@ -4750,11 +5539,11 @@ STDCALL
 NtSetTimer(
        IN HANDLE TimerHandle,
        IN PLARGE_INTEGER DueTime,
-       IN PTIMERAPCROUTINE TimerApcRoutine,
-       IN PVOID TimerContext,
-       IN BOOL WakeTimer,
-       IN ULONG Period OPTIONAL,
-       OUT PBOOLEAN PreviousState OPTIONAL
+       IN PTIMER_APC_ROUTINE TimerApcRoutine  OPTIONAL,
+       IN PVOID TimerContext  OPTIONAL,
+       IN BOOLEAN ResumeTimer,
+       IN LONG Period  OPTIONAL,
+       OUT PBOOLEAN PreviousState  OPTIONAL
        );
 
 /*
@@ -4928,8 +5717,9 @@ ZwAccessCheckAndAuditAlarm(
 /*
  * FUNCTION: Adds an atom to the global atom table
  * ARGUMENTS:
- *        AtomString = The string to add to the atom table.
- *        Atom (OUT) = Caller supplies storage for the resulting atom.
+ *       AtomName = The string to add to the atom table.
+ *       AtomNameLength = Length of the atom name
+ *       Atom (OUT) = Caller supplies storage for the resulting atom.
  * REMARKS: The arguments map to the win32 add GlobalAddAtom.
  * RETURNS: Status
  */
@@ -4937,6 +5727,7 @@ NTSTATUS
 STDCALL
 NtAddAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        IN OUT  PRTL_ATOM       Atom
        );
 
@@ -4945,23 +5736,26 @@ NTSTATUS
 STDCALL
 ZwAddAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        IN OUT  PRTL_ATOM       Atom
        );
 
 NTSTATUS
 STDCALL
 NtAllocateUuids(
-       PULARGE_INTEGER Time,
-       PULONG Range,
-       PULONG Sequence
+       OUT PULARGE_INTEGER Time,
+       OUT PULONG Range,
+       OUT PULONG Sequence,
+       OUT PUCHAR Seed
        );
 
 NTSTATUS
 STDCALL
 ZwAllocateUuids(
-       PULARGE_INTEGER Time,
-       PULONG Range,
-       PULONG Sequence
+       OUT PULARGE_INTEGER Time,
+       OUT PULONG Range,
+       OUT PULONG Sequence,
+       OUT PUCHAR Seed
        );
 
 NTSTATUS
@@ -5013,7 +5807,7 @@ ZwCreateThread(
        IN HANDLE ProcessHandle,
        OUT PCLIENT_ID ClientId,
        IN PCONTEXT ThreadContext,
-       IN PUSER_STACK UserStack,
+       IN PINITIAL_TEB InitialTeb,
        IN BOOLEAN CreateSuspended
        );
 
@@ -5022,8 +5816,8 @@ STDCALL
 NtDuplicateToken(  
        IN HANDLE ExistingToken, 
        IN ACCESS_MASK DesiredAccess, 
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
+       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+       IN BOOLEAN EffectiveOnly,
        IN TOKEN_TYPE TokenType,  
        OUT PHANDLE NewToken     
        );
@@ -5033,8 +5827,8 @@ STDCALL
 ZwDuplicateToken(  
        IN HANDLE ExistingToken, 
        IN ACCESS_MASK DesiredAccess, 
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
-       IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
+       IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+       IN BOOLEAN EffectiveOnly,
        IN TOKEN_TYPE TokenType,  
        OUT PHANDLE NewToken     
        );
@@ -5043,6 +5837,7 @@ ZwDuplicateToken(
  * FUNCTION: Finds a atom
  * ARGUMENTS:
  *       AtomName = Name to search for.
+ *       AtomNameLength = Length of the atom name
  *       Atom = Caller supplies storage for the resulting atom
  * RETURNS: Status 
  * REMARKS:
@@ -5052,6 +5847,7 @@ NTSTATUS
 STDCALL
 NtFindAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        OUT     PRTL_ATOM       Atom OPTIONAL
        );
 
@@ -5059,6 +5855,7 @@ NTSTATUS
 STDCALL
 ZwFindAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        OUT     PRTL_ATOM       Atom OPTIONAL
        );
 
@@ -5106,10 +5903,10 @@ ZwFlushVirtualMemory(
  *        UpTime = Number of clock ticks since boot.
  * RETURNS: Status 
  */
-NTSTATUS
-STDCALL 
+ULONG
+STDCALL
 ZwGetTickCount(
-       PULONG UpTime
+       VOID
        );
 
 /*
@@ -5184,8 +5981,8 @@ NTSTATUS
 STDCALL
 ZwProtectVirtualMemory(
        IN HANDLE ProcessHandle,
-       IN PVOID BaseAddress,
-       IN ULONG NumberOfBytesToProtect,
+       IN PVOID *BaseAddress,
+       IN ULONG *NumberOfBytesToProtect,
        IN ULONG NewAccessProtection,
        OUT PULONG OldAccessProtection
        );
@@ -5213,25 +6010,26 @@ ZwQueryInformationAtom(
 /*
  * FUNCTION: Query information about the content of a directory object
  * ARGUMENTS:
-       DirObjInformation =   Buffer must be large enough to hold the name strings too
-        GetNextIndex = If TRUE :return the index of the next object in this directory in ObjectIndex
-                      If FALSE:  return the number of objects in this directory in ObjectIndex
-        IgnoreInputIndex= If TRUE:  ignore input value of ObjectIndex  always start at index 0
-                         If FALSE use input value of ObjectIndex
-       ObjectIndex =   zero based index of object in the directory  depends on GetNextIndex and IgnoreInputIndex
-        DataWritten  = Actual size of the ObjectIndex ???
+       DirectoryHandle =
+       Buffer =   Buffer must be large enough to hold the name strings too
+        ReturnSingleEntry = If TRUE :return the index of the next object in this directory in ObjectIndex
+                           If FALSE:  return the number of objects in this directory in ObjectIndex
+        RestartScan = If TRUE:  ignore input value of ObjectIndex  always start at index 0
+                     If FALSE use input value of ObjectIndex
+       Context =   zero based index of object in the directory  depends on GetNextIndex and IgnoreInputIndex
+        ReturnLength  = Actual size of the ObjectIndex ???
  * RETURNS: Status
  */
 NTSTATUS
 STDCALL
 ZwQueryDirectoryObject(
-       IN HANDLE DirObjHandle,
-       OUT POBJDIR_INFORMATION DirObjInformation,
-       IN ULONG                BufferLength,
-       IN BOOLEAN              GetNextIndex,
-       IN BOOLEAN              IgnoreInputIndex,
-       IN OUT PULONG           ObjectIndex,
-       OUT PULONG              DataWritten OPTIONAL
+       IN      HANDLE  DirectoryHandle,
+       OUT     PVOID   Buffer,
+       IN      ULONG   BufferLength,
+       IN      BOOLEAN ReturnSingleEntry,
+       IN      BOOLEAN RestartScan,
+       IN OUT  PULONG  Context,
+       OUT     PULONG  ReturnLength OPTIONAL
        );
 
 /*
@@ -5280,20 +6078,20 @@ NTSTATUS
 STDCALL
 NtQueryInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        OUT PVOID ProcessInformation,
        IN ULONG ProcessInformationLength,
-       OUT PULONG ReturnLength 
+       OUT PULONG  ReturnLength  OPTIONAL
        );
 
 NTSTATUS
 STDCALL
 ZwQueryInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        OUT PVOID ProcessInformation,
        IN ULONG ProcessInformationLength,
-       OUT PULONG ReturnLength 
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 /*
@@ -5306,23 +6104,24 @@ ZwQueryInformationProcess(
 NTSTATUS
 STDCALL
 ZwQueryIntervalProfile(
-       OUT PULONG Interval,
-       OUT KPROFILE_SOURCE ClockSource
+       IN  KPROFILE_SOURCE ProfileSource,
+       OUT PULONG Interval
        );
 
 /*
  * FUNCTION: Queries the information of a  object.
- * ARGUMENTS: 
+ * ARGUMENTS:
        ObjectHandle = Handle to a object
        ObjectInformationClass = Index to a certain information structure
 
-       ObjectBasicInformation          
-       ObjectTypeInformation           OBJECT_TYPE_INFORMATION 
+       ObjectBasicInformation          OBJECT_BASIC_INFORMATION
        ObjectNameInformation           OBJECT_NAME_INFORMATION
-       ObjectDataInformation           OBJECT_DATA_INFORMATION
+       ObjectTypeInformation           OBJECT_TYPE_INFORMATION
+       ObjectAllTypesInformation       OBJECT_ALL_TYPES_INFORMATION
+       ObjectHandleInformation         OBJECT_HANDLE_ATTRIBUTES_INFORMATION
 
        ObjectInformation = Caller supplies storage for resulting information
-       Length = Size of the supplied storage 
+       Length = Size of the supplied storage
        ResultLength = Bytes written
  */
 
@@ -5330,10 +6129,10 @@ NTSTATUS
 STDCALL
 ZwQueryObject(
        IN HANDLE ObjectHandle,
-       IN CINT ObjectInformationClass,
+       IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        OUT PVOID ObjectInformation,
        IN ULONG Length,
-       OUT PULONG ResultLength
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 NTSTATUS
@@ -5413,7 +6212,7 @@ ZwRaiseHardError(
  *       KeyInformationClass =  Index to the a certain information structure.
                        Can be one of the following values:
 
- *      KeyWriteTimeInformation  KEY_WRITE_TIME_INFORMATION
+ *      KeyLastWriteTimeInformation  KEY_LAST_WRITE_TIME_INFORMATION
 
         KeyInformation = Storage for the new information
  *       KeyInformationLength = Size of the information strucure
@@ -5424,7 +6223,7 @@ NTSTATUS
 STDCALL
 ZwSetInformationKey(
        IN HANDLE KeyHandle,
-       IN CINT KeyInformationClass,
+       IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
        IN PVOID KeyInformation,
        IN ULONG KeyInformationLength
        );
@@ -5435,12 +6234,7 @@ ZwSetInformationKey(
  *      ObjectHandle = 
  *     ObjectInformationClass = Index to the set of parameters to change. 
 
-                       
-       ObjectBasicInformation          
-       ObjectTypeInformation           OBJECT_TYPE_INFORMATION 
-       ObjectAllInformation            
-       ObjectDataInformation           OBJECT_DATA_INFORMATION
-       ObjectNameInformation           OBJECT_NAME_INFORMATION 
+       ObjectHandleInformation         OBJECT_HANDLE_ATTRIBUTE_INFORMATION
 
 
  *      ObjectInformation = Caller supplies storage for parameters to set.
@@ -5451,9 +6245,9 @@ NTSTATUS
 STDCALL
 ZwSetInformationObject(
        IN HANDLE ObjectHandle,
-       IN CINT ObjectInformationClass,
+       IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        IN PVOID ObjectInformation,
-       IN ULONG Length 
+       IN ULONG Length
        );
 
 /*
@@ -5481,7 +6275,7 @@ NTSTATUS
 STDCALL
 NtSetInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        IN PVOID ProcessInformation,
        IN ULONG ProcessInformationLength
        );
@@ -5490,7 +6284,7 @@ NTSTATUS
 STDCALL
 ZwSetInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        IN PVOID ProcessInformation,
        IN ULONG ProcessInformationLength
        );
@@ -5512,13 +6306,19 @@ STDCALL
 ZwSetTimer(
        IN HANDLE TimerHandle,
        IN PLARGE_INTEGER DueTime,
-       IN PTIMERAPCROUTINE TimerApcRoutine,
-       IN PVOID TimerContext,
-       IN BOOL WakeTimer,
-       IN ULONG Period OPTIONAL,
-       OUT PBOOLEAN PreviousState OPTIONAL
+       IN PTIMER_APC_ROUTINE TimerApcRoutine  OPTIONAL,
+       IN PVOID TimerContext  OPTIONAL,
+       IN BOOLEAN ResumeTimer,
+       IN LONG Period  OPTIONAL,
+       OUT PBOOLEAN PreviousState  OPTIONAL
        );
 
+NTSTATUS STDCALL
+NtSetUuidSeed(IN PUCHAR Seed);
+
+NTSTATUS STDCALL
+ZwSetUuidSeed(IN PUCHAR Seed);
+
 /*
  * FUNCTION: Unloads a registry key.
  * ARGUMENTS:
@@ -5596,15 +6396,15 @@ ZwWaitForMultipleObjects (
 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
+       OUT PHANDLE ProfileHandle,
+       IN HANDLE Process  OPTIONAL,
+       IN PVOID ImageBase,
+       IN ULONG ImageSize,
+       IN ULONG BucketSize,
+       IN PVOID Buffer,
+       IN ULONG BufferSize,
+       IN KPROFILE_SOURCE ProfileSource,
+       IN KAFFINITY Affinity
        );
 
 /*
@@ -5618,7 +6418,7 @@ NTSTATUS
 STDCALL
 ZwDelayExecution(
        IN BOOLEAN Alertable,
-       IN TIME *Interval
+       IN PLARGE_INTEGER DelayInterval
        );
 
 /*
@@ -5632,7 +6432,7 @@ NTSTATUS
 STDCALL
 ZwExtendSection(
        IN HANDLE SectionHandle,
-       IN ULONG NewMaximumSize
+       IN PLARGE_INTEGER NewMaximumSize
        );
 
 /*
@@ -5658,10 +6458,10 @@ ZwQuerySection(
 
 typedef struct _SECTION_IMAGE_INFORMATION
 {
-  PVOID EntryPoint;
+  ULONG_PTR EntryPoint;
   ULONG Unknown1;
-  ULONG StackReserve;
-  ULONG StackCommit;
+  ULONG_PTR StackReserve;
+  ULONG_PTR StackCommit;
   ULONG Subsystem;
   USHORT MinorSubsystemVersion;
   USHORT MajorSubsystemVersion;
@@ -5721,10 +6521,11 @@ NtQuerySystemTime (
        ObjectHandle = Handle to a object
        ObjectInformationClass = Index to a certain information structure
 
-       ObjectBasicInformation          
-       ObjectTypeInformation           OBJECT_TYPE_INFORMATION 
+       ObjectBasicInformation          OBJECT_BASIC_INFORMATION
        ObjectNameInformation           OBJECT_NAME_INFORMATION
-       ObjectDataInformation           OBJECT_DATA_INFORMATION
+       ObjectTypeInformation           OBJECT_TYPE_INFORMATION
+       ObjectAllTypesInformation       OBJECT_ALL_TYPES_INFORMATION
+       ObjectHandleInformation         OBJECT_HANDLE_ATTRIBUTE_INFORMATION
 
        ObjectInformation = Caller supplies storage for resulting information
        Length = Size of the supplied storage 
@@ -5735,10 +6536,10 @@ NTSTATUS
 STDCALL
 NtQueryObject(
        IN HANDLE ObjectHandle,
-       IN CINT ObjectInformationClass,
+       IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        OUT PVOID ObjectInformation,
        IN ULONG Length,
-       OUT PULONG ResultLength
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 /* BEGIN REACTOS ONLY */