NtAcceptConnectPort signature fixed.
[reactos.git] / reactos / include / ntos / zw.h
index 20dab13..82c57d3 100755 (executable)
@@ -1,5 +1,4 @@
-
-/* $Id: zw.h,v 1.20 2003/11/21 18:42:05 navaraf Exp $
+/* $Id$
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -53,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: 
@@ -237,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:
@@ -296,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:
@@ -344,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:
@@ -392,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
        );
 
@@ -402,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
        );
 
@@ -620,7 +760,7 @@ STDCALL
 NtCreateMutant(
        OUT PHANDLE MutantHandle,
        IN ACCESS_MASK DesiredAccess,
-       IN POBJECT_ATTRIBUTES ObjectAttributes,
+       IN POBJECT_ATTRIBUTES ObjectAttributes  OPTIONAL,
        IN BOOLEAN InitialOwner
        );
 
@@ -629,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:
@@ -649,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,
@@ -662,8 +898,8 @@ NtCreateProcess(
         IN HANDLE ExceptionPort OPTIONAL
        );
 
-NTSTATUS 
-STDCALL 
+NTSTATUS
+STDCALL
 ZwCreateProcess(
        OUT PHANDLE ProcessHandle,
         IN ACCESS_MASK DesiredAccess,
@@ -692,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
@@ -704,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
@@ -760,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
        );
 
 /*
@@ -874,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:
@@ -894,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:
@@ -1046,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:
@@ -1203,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 ]
@@ -1249,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:
@@ -1292,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:
@@ -1309,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: 
@@ -1386,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 
@@ -1543,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
@@ -1558,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
        );
 
 /*
@@ -1693,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:
@@ -1792,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:
@@ -1826,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
        );
@@ -1848,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
        );
@@ -1902,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:
@@ -1936,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(
@@ -2020,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
        );
 
 /*
@@ -2038,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:
@@ -2070,6 +2526,18 @@ ZwQueryDefaultLocale(
        OUT PLCID DefaultLocaleId
        );
 
+NTSTATUS 
+STDCALL 
+NtQueryDefaultUILanguage(
+       PLANGID LanguageId
+       );
+
+NTSTATUS 
+STDCALL 
+ZwQueryDefaultUILanguage(
+       PLANGID LanguageId
+       );
+
 /*
  * FUNCTION: Queries a directory file.
  * ARGUMENTS:
@@ -2190,7 +2658,7 @@ NtQueryEvent(
        IN EVENT_INFORMATION_CLASS EventInformationClass,
        OUT PVOID EventInformation,
        IN ULONG EventInformationLength,
-       OUT PULONG ReturnLength
+       OUT PULONG ReturnLength  OPTIONAL
        );
 NTSTATUS
 STDCALL
@@ -2199,7 +2667,7 @@ ZwQueryEvent(
        IN EVENT_INFORMATION_CLASS EventInformationClass,
        OUT PVOID EventInformation,
        IN ULONG EventInformationLength,
-       OUT PULONG ReturnLength
+       OUT PULONG ReturnLength  OPTIONAL
        );
 
 NTSTATUS STDCALL
@@ -2234,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
@@ -2247,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            
@@ -2260,7 +2728,7 @@ ZwQueryFullAttributesFile(IN POBJECT_ATTRIBUTES ObjectAttributes,
          FileContentIndexInformation           
          FileInheritContentIndexInformation    
          FileOleInformation                    
-         FileMaximumInformation                        
+         FileMaximumInformation                
 
  * REMARK:
  *       This procedure maps to the win32 GetShortPathName, GetLongPathName,
@@ -2287,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.
@@ -2330,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
        );
 
 
@@ -2354,6 +2867,18 @@ ZwQueryInformationToken(
        OUT PULONG ReturnLength
        );
 
+NTSTATUS 
+STDCALL 
+NtQueryInstallUILanguage(
+       PLANGID LanguageId
+       );
+
+NTSTATUS 
+STDCALL 
+ZwQueryInstallUILanguage(
+       PLANGID LanguageId
+       );
+
 NTSTATUS
 STDCALL
 NtQueryIoCompletion(
@@ -2404,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
@@ -2441,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 
@@ -2471,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
        );
 
 /*
@@ -2500,7 +3054,7 @@ NtQuerySemaphore(
        IN      SEMAPHORE_INFORMATION_CLASS     SemaphoreInformationClass,
        OUT     PVOID                           SemaphoreInformation,
        IN      ULONG                           Length,
-       OUT     PULONG                          ReturnLength
+       OUT     PULONG                          ReturnLength  OPTIONAL
        );
 
 NTSTATUS
@@ -2510,7 +3064,7 @@ ZwQuerySemaphore(
        IN      SEMAPHORE_INFORMATION_CLASS     SemaphoreInformationClass,
        OUT     PVOID                           SemaphoreInformation,
        IN      ULONG                           Length,
-       OUT     PULONG                          ReturnLength
+       OUT     PULONG                          ReturnLength  OPTIONAL
        );
 
 
@@ -2526,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
        ); 
 
 
@@ -2553,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
        );
 
 
@@ -2617,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
        );
 
 /*
@@ -2858,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
+       );
+
+
+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
-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  
-       ); 
 /*
  * FUNCTION: Copies a range of virtual memory to a buffer
  * ARGUMENTS: 
@@ -2926,12 +3499,12 @@ ZwReadVirtualMemory(
 NTSTATUS
 STDCALL        
 NtRegisterThreadTerminatePort(
-       HANDLE TerminationPort
+       HANDLE PortHandle
        );
 NTSTATUS
 STDCALL        
 ZwRegisterThreadTerminatePort(
-       HANDLE TerminationPort
+       HANDLE PortHandle
        );
 
 /*
@@ -2945,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
        );
 
 /*
@@ -2968,7 +3541,7 @@ STDCALL
 NtReleaseSemaphore(
        IN      HANDLE  SemaphoreHandle,
        IN      LONG    ReleaseCount,
-       OUT     PLONG   PreviousCount
+       OUT     PLONG   PreviousCount  OPTIONAL
        );
 
 NTSTATUS
@@ -2976,7 +3549,7 @@ STDCALL
 ZwReleaseSemaphore(
        IN      HANDLE  SemaphoreHandle,
        IN      LONG    ReleaseCount,
-       OUT     PLONG   PreviousCount
+       OUT     PLONG   PreviousCount  OPTIONAL
        );
 
 /*
@@ -2993,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
    );
@@ -3003,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
    );
@@ -3020,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: 
@@ -3043,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
@@ -3081,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
@@ -3112,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
  */
 
@@ -3124,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
        );
 
 /*
@@ -3157,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:
@@ -3218,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
        );
 
 /*
@@ -3304,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: 
@@ -3396,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
    );
@@ -3406,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
    );
@@ -3505,6 +4202,24 @@ 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(
@@ -3600,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
        );
 
 /*
@@ -3705,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
  */
@@ -3729,9 +4468,9 @@ ZwStartProfile(
 
 /*
  * FUNCTION: Stops profiling
- * ARGUMENTS: 
+ * ARGUMENTS:
  *       ProfileHandle = Handle to the profile
- * RETURNS: Status    
+ * RETURNS: Status
  */
 
 NTSTATUS
@@ -3755,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
@@ -3790,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
@@ -3824,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.
@@ -4096,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
        );
 
 /*
@@ -4156,27 +4929,14 @@ ZwYieldExecution(
        VOID
        );
 
-/* --- PLUG AND PLAY --- */
-
-NTSTATUS
-STDCALL
-NtPlugPlayControl (DWORD Unknown1,
-                   DWORD Unknown2,
-                   DWORD Unknown3);
-
-NTSTATUS
-STDCALL
-NtGetPlugPlayEvent (ULONG Reserved1,
-                    ULONG Reserved2,
-                    PVOID Buffer,
-                    ULONG BufferLength);
-
 /* --- POWER MANAGEMENT --- */
 
+#ifndef __USE_W32API
 NTSTATUS STDCALL 
 NtSetSystemPowerState(IN POWER_ACTION SystemAction,
                      IN SYSTEM_POWER_STATE MinSystemState,
                      IN ULONG Flags);
+#endif
 
 /* --- DEBUG SUBSYSTEM --- */
 
@@ -4252,12 +5012,6 @@ NtSetLdtEntries (ULONG Selector1,
                 ULONG Selector2,
                 LDT_ENTRY LdtEntry2);
 
-NTSTATUS
-STDCALL
-NtQueryOleDirectoryFile (
-       VOID
-       );
-
 /*
  * FUNCTION: Checks a clients access rights to a object
  * ARGUMENTS: 
@@ -4269,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
  */
 
@@ -4282,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
@@ -4295,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
@@ -4414,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
@@ -4447,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
        );
 
@@ -4462,8 +5219,8 @@ NtCreateThread(
 NTSTATUS
 STDCALL
 NtDelayExecution(
-       IN ULONG Alertable,
-       IN TIME *Interval
+       IN BOOLEAN Alertable,
+       IN PLARGE_INTEGER DelayInterval
        );
 
 /*
@@ -4477,7 +5234,7 @@ NTSTATUS
 STDCALL
 NtExtendSection(
        IN HANDLE SectionHandle,
-       IN ULONG NewMaximumSize
+       IN PLARGE_INTEGER NewMaximumSize
        );
 
 /*
@@ -4524,10 +5281,10 @@ NtFlushVirtualMemory(
  *        UpTime = Number of clock ticks since boot.
  * RETURNS: Status 
  */
-NTSTATUS
+ULONG
 STDCALL 
 NtGetTickCount(
-       PULONG UpTime
+       VOID
        );
 
 /*
@@ -4603,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
        );
@@ -4644,8 +5401,8 @@ NtQueryDirectoryObject(
 NTSTATUS
 STDCALL
 NtQueryIntervalProfile(
-       OUT PULONG Interval,
-       OUT KPROFILE_SOURCE ClockSource
+       IN  KPROFILE_SOURCE ProfileSource,
+       OUT PULONG Interval
        );
 
 /*
@@ -4782,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
        );
 
 /*
@@ -4960,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
  */
@@ -4969,6 +5727,7 @@ NTSTATUS
 STDCALL
 NtAddAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        IN OUT  PRTL_ATOM       Atom
        );
 
@@ -4977,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
@@ -5045,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
        );
 
@@ -5054,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     
        );
@@ -5065,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     
        );
@@ -5075,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:
@@ -5084,6 +5847,7 @@ NTSTATUS
 STDCALL
 NtFindAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        OUT     PRTL_ATOM       Atom OPTIONAL
        );
 
@@ -5091,6 +5855,7 @@ NTSTATUS
 STDCALL
 ZwFindAtom(
        IN      PWSTR           AtomName,
+       IN      ULONG           AtomNameLength,
        OUT     PRTL_ATOM       Atom OPTIONAL
        );
 
@@ -5138,10 +5903,10 @@ ZwFlushVirtualMemory(
  *        UpTime = Number of clock ticks since boot.
  * RETURNS: Status 
  */
-NTSTATUS
-STDCALL 
+ULONG
+STDCALL
 ZwGetTickCount(
-       PULONG UpTime
+       VOID
        );
 
 /*
@@ -5216,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
        );
@@ -5313,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
        );
 
 /*
@@ -5339,8 +6104,8 @@ ZwQueryInformationProcess(
 NTSTATUS
 STDCALL
 ZwQueryIntervalProfile(
-       OUT PULONG Interval,
-       OUT KPROFILE_SOURCE ClockSource
+       IN  KPROFILE_SOURCE ProfileSource,
+       OUT PULONG Interval
        );
 
 /*
@@ -5367,7 +6132,7 @@ ZwQueryObject(
        IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        OUT PVOID ObjectInformation,
        IN ULONG Length,
-       OUT PULONG ResultLength OPTIONAL
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 NTSTATUS
@@ -5510,7 +6275,7 @@ NTSTATUS
 STDCALL
 NtSetInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        IN PVOID ProcessInformation,
        IN ULONG ProcessInformationLength
        );
@@ -5519,7 +6284,7 @@ NTSTATUS
 STDCALL
 ZwSetInformationProcess(
        IN HANDLE ProcessHandle,
-       IN CINT ProcessInformationClass,
+       IN PROCESSINFOCLASS ProcessInformationClass,
        IN PVOID ProcessInformation,
        IN ULONG ProcessInformationLength
        );
@@ -5541,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:
@@ -5625,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
        );
 
 /*
@@ -5647,7 +6418,7 @@ NTSTATUS
 STDCALL
 ZwDelayExecution(
        IN BOOLEAN Alertable,
-       IN TIME *Interval
+       IN PLARGE_INTEGER DelayInterval
        );
 
 /*
@@ -5661,7 +6432,7 @@ NTSTATUS
 STDCALL
 ZwExtendSection(
        IN HANDLE SectionHandle,
-       IN ULONG NewMaximumSize
+       IN PLARGE_INTEGER NewMaximumSize
        );
 
 /*
@@ -5687,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;
@@ -5768,7 +6539,7 @@ NtQueryObject(
        IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
        OUT PVOID ObjectInformation,
        IN ULONG Length,
-       OUT PULONG ResultLength OPTIONAL
+       OUT PULONG ResultLength  OPTIONAL
        );
 
 /* BEGIN REACTOS ONLY */