- SVN maintenance (set eol-style to native)
authorAleksey Bragin <aleksey@reactos.org>
Fri, 5 May 2006 18:13:26 +0000 (18:13 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Fri, 5 May 2006 18:13:26 +0000 (18:13 +0000)
svn path=/trunk/; revision=21808

reactos/include/ndk/cmfuncs.h
reactos/include/ndk/cmtypes.h
reactos/include/ndk/dbgkfuncs.h
reactos/include/ndk/exfuncs.h
reactos/include/ndk/fixmes.txt
reactos/include/ndk/ifssupp.h
reactos/include/ndk/lpcfuncs.h
reactos/include/ndk/pofuncs.h
reactos/include/ndk/readme.txt

index 842a54e..4e5c8d6 100644 (file)
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    cmfuncs.h\r
-\r
-Abstract:\r
-\r
-    Function definitions for the Configuration Manager.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _CMFUNCS_H\r
-#define _CMFUNCS_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-\r
-//\r
-// Native calls\r
-//\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateKey(\r
-    OUT PHANDLE KeyHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN ULONG TitleIndex,\r
-    IN PUNICODE_STRING Class OPTIONAL,\r
-    IN ULONG CreateOptions,\r
-    IN PULONG Disposition OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtDeleteKey(\r
-    IN HANDLE KeyHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtDeleteValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtEnumerateKey(\r
-    IN HANDLE KeyHandle,\r
-    IN ULONG Index,\r
-    IN KEY_INFORMATION_CLASS KeyInformationClass,\r
-    OUT PVOID KeyInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtEnumerateValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN ULONG Index,\r
-    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,\r
-    OUT PVOID KeyValueInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtFlushKey(\r
-    IN HANDLE KeyHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtGetPlugPlayEvent(\r
-    IN ULONG Reserved1,\r
-    IN ULONG Reserved2,\r
-    OUT PPLUGPLAY_EVENT_BLOCK Buffer,\r
-    IN ULONG BufferSize\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtInitializeRegistry(\r
-    BOOLEAN SetUpBoot\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtLoadKey(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes,\r
-    IN POBJECT_ATTRIBUTES FileObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtLoadKey2(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes,\r
-    IN POBJECT_ATTRIBUTES FileObjectAttributes,\r
-    IN ULONG Flags\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtNotifyChangeKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE Event,\r
-    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,\r
-    IN PVOID ApcContext OPTIONAL,\r
-    OUT PIO_STATUS_BLOCK IoStatusBlock,\r
-    IN ULONG CompletionFilter,\r
-    IN BOOLEAN Asynchroneous,\r
-    OUT PVOID ChangeBuffer,\r
-    IN ULONG Length,\r
-    IN BOOLEAN WatchSubtree\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenKey(\r
-    OUT PHANDLE KeyHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtPlugPlayControl(\r
-    IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,\r
-    IN OUT PVOID Buffer,\r
-    IN ULONG BufferSize\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryKey(\r
-    IN HANDLE KeyHandle,\r
-    IN KEY_INFORMATION_CLASS KeyInformationClass,\r
-    OUT PVOID KeyInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryMultipleValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN OUT PKEY_VALUE_ENTRY ValueList,\r
-    IN ULONG NumberOfValues,\r
-    OUT PVOID Buffer,\r
-    IN OUT PULONG Length,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName,\r
-    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,\r
-    OUT PVOID KeyValueInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtReplaceKey(\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN HANDLE Key,\r
-    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtRestoreKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle,\r
-    IN ULONG RestoreFlags\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSaveKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSaveKeyEx(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle,\r
-    IN ULONG Flags\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetInformationKey(\r
-    IN HANDLE KeyHandle,\r
-    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,\r
-    IN PVOID KeyInformation,\r
-    IN ULONG KeyInformationLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName,\r
-    IN ULONG TitleIndex OPTIONAL,\r
-    IN ULONG Type,\r
-    IN PVOID Data,\r
-    IN ULONG DataSize\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtUnloadKey(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes\r
-);\r
-\r
-#ifdef NTOS_MODE_USER\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateKey(\r
-    OUT PHANDLE KeyHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN ULONG TitleIndex,\r
-    IN PUNICODE_STRING Class OPTIONAL,\r
-    IN ULONG CreateOptions,\r
-    IN PULONG Disposition OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwDeleteKey(\r
-    IN HANDLE KeyHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwDeleteValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwEnumerateKey(\r
-    IN HANDLE KeyHandle,\r
-    IN ULONG Index,\r
-    IN KEY_INFORMATION_CLASS KeyInformationClass,\r
-    OUT PVOID KeyInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwEnumerateValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN ULONG Index,\r
-    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,\r
-    OUT PVOID KeyValueInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwFlushKey(\r
-    IN HANDLE KeyHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwGetPlugPlayEvent(\r
-    IN ULONG Reserved1,\r
-    IN ULONG Reserved2,\r
-    OUT PPLUGPLAY_EVENT_BLOCK Buffer,\r
-    IN ULONG BufferSize\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwInitializeRegistry(\r
-    BOOLEAN SetUpBoot\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwLoadKey(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes,\r
-    IN POBJECT_ATTRIBUTES FileObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwLoadKey2(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes,\r
-    IN POBJECT_ATTRIBUTES FileObjectAttributes,\r
-    IN ULONG Flags\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwNotifyChangeKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE Event,\r
-    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,\r
-    IN PVOID ApcContext OPTIONAL,\r
-    OUT PIO_STATUS_BLOCK IoStatusBlock,\r
-    IN ULONG CompletionFilter,\r
-    IN BOOLEAN Asynchroneous,\r
-    OUT PVOID ChangeBuffer,\r
-    IN ULONG Length,\r
-    IN BOOLEAN WatchSubtree\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenKey(\r
-    OUT PHANDLE KeyHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwPlugPlayControl(\r
-    IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,\r
-    IN OUT PVOID Buffer,\r
-    IN ULONG BufferSize\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryKey(\r
-    IN HANDLE KeyHandle,\r
-    IN KEY_INFORMATION_CLASS KeyInformationClass,\r
-    OUT PVOID KeyInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryMultipleValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN OUT PKEY_VALUE_ENTRY ValueList,\r
-    IN ULONG NumberOfValues,\r
-    OUT PVOID Buffer,\r
-    IN OUT PULONG Length,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName,\r
-    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,\r
-    OUT PVOID KeyValueInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwReplaceKey(\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN HANDLE Key,\r
-    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwRestoreKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle,\r
-    IN ULONG RestoreFlags\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSaveKey(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSaveKeyEx(\r
-    IN HANDLE KeyHandle,\r
-    IN HANDLE FileHandle,\r
-    IN ULONG Flags\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetInformationKey(\r
-    IN HANDLE KeyHandle,\r
-    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,\r
-    IN PVOID KeyInformation,\r
-    IN ULONG KeyInformationLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetValueKey(\r
-    IN HANDLE KeyHandle,\r
-    IN PUNICODE_STRING ValueName,\r
-    IN ULONG TitleIndex OPTIONAL,\r
-    IN ULONG Type,\r
-    IN PVOID Data,\r
-    IN ULONG DataSize\r
-);\r
-#endif\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwUnloadKey(\r
-    IN POBJECT_ATTRIBUTES KeyObjectAttributes\r
-);\r
-\r
-#endif\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    cmfuncs.h
+
+Abstract:
+
+    Function definitions for the Configuration Manager.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _CMFUNCS_H
+#define _CMFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+
+//
+// Native calls
+//
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN ULONG TitleIndex,
+    IN PUNICODE_STRING Class OPTIONAL,
+    IN ULONG CreateOptions,
+    IN PULONG Disposition OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDeleteKey(
+    IN HANDLE KeyHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDeleteValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtEnumerateKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtEnumerateValueKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtFlushKey(
+    IN HANDLE KeyHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtGetPlugPlayEvent(
+    IN ULONG Reserved1,
+    IN ULONG Reserved2,
+    OUT PPLUGPLAY_EVENT_BLOCK Buffer,
+    IN ULONG BufferSize
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtInitializeRegistry(
+    BOOLEAN SetUpBoot
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtLoadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtLoadKey2(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes,
+    IN ULONG Flags
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtNotifyChangeKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE Event,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN Asynchroneous,
+    OUT PVOID ChangeBuffer,
+    IN ULONG Length,
+    IN BOOLEAN WatchSubtree
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtPlugPlayControl(
+    IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,
+    IN OUT PVOID Buffer,
+    IN ULONG BufferSize
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryKey(
+    IN HANDLE KeyHandle,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryMultipleValueKey(
+    IN HANDLE KeyHandle,
+    IN OUT PKEY_VALUE_ENTRY ValueList,
+    IN ULONG NumberOfValues,
+    OUT PVOID Buffer,
+    IN OUT PULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtReplaceKey(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN HANDLE Key,
+    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtRestoreKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG RestoreFlags
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSaveKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSaveKeyEx(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG Flags
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetInformationKey(
+    IN HANDLE KeyHandle,
+    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
+    IN PVOID KeyInformation,
+    IN ULONG KeyInformationLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN ULONG TitleIndex OPTIONAL,
+    IN ULONG Type,
+    IN PVOID Data,
+    IN ULONG DataSize
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtUnloadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN ULONG TitleIndex,
+    IN PUNICODE_STRING Class OPTIONAL,
+    IN ULONG CreateOptions,
+    IN PULONG Disposition OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteKey(
+    IN HANDLE KeyHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwEnumerateKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwEnumerateValueKey(
+    IN HANDLE KeyHandle,
+    IN ULONG Index,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFlushKey(
+    IN HANDLE KeyHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwGetPlugPlayEvent(
+    IN ULONG Reserved1,
+    IN ULONG Reserved2,
+    OUT PPLUGPLAY_EVENT_BLOCK Buffer,
+    IN ULONG BufferSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwInitializeRegistry(
+    BOOLEAN SetUpBoot
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwLoadKey2(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes,
+    IN POBJECT_ATTRIBUTES FileObjectAttributes,
+    IN ULONG Flags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwNotifyChangeKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE Event,
+    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
+    IN PVOID ApcContext OPTIONAL,
+    OUT PIO_STATUS_BLOCK IoStatusBlock,
+    IN ULONG CompletionFilter,
+    IN BOOLEAN Asynchroneous,
+    OUT PVOID ChangeBuffer,
+    IN ULONG Length,
+    IN BOOLEAN WatchSubtree
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenKey(
+    OUT PHANDLE KeyHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPlugPlayControl(
+    IN PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,
+    IN OUT PVOID Buffer,
+    IN ULONG BufferSize
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryKey(
+    IN HANDLE KeyHandle,
+    IN KEY_INFORMATION_CLASS KeyInformationClass,
+    OUT PVOID KeyInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryMultipleValueKey(
+    IN HANDLE KeyHandle,
+    IN OUT PKEY_VALUE_ENTRY ValueList,
+    IN ULONG NumberOfValues,
+    OUT PVOID Buffer,
+    IN OUT PULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
+    OUT PVOID KeyValueInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReplaceKey(
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN HANDLE Key,
+    IN POBJECT_ATTRIBUTES ReplacedObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRestoreKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG RestoreFlags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSaveKey(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSaveKeyEx(
+    IN HANDLE KeyHandle,
+    IN HANDLE FileHandle,
+    IN ULONG Flags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetInformationKey(
+    IN HANDLE KeyHandle,
+    IN KEY_SET_INFORMATION_CLASS KeyInformationClass,
+    IN PVOID KeyInformation,
+    IN ULONG KeyInformationLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetValueKey(
+    IN HANDLE KeyHandle,
+    IN PUNICODE_STRING ValueName,
+    IN ULONG TitleIndex OPTIONAL,
+    IN ULONG Type,
+    IN PVOID Data,
+    IN ULONG DataSize
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwUnloadKey(
+    IN POBJECT_ATTRIBUTES KeyObjectAttributes
+);
+
+#endif
index 17b3aca..b83d4f5 100644 (file)
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    cmtypes.h\r
-\r
-Abstract:\r
-\r
-    Type definitions for the Configuration Manager.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _CMTYPES_H\r
-#define _CMTYPES_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-#include <cfg.h>\r
-#include <iotypes.h>\r
-\r
-#define MAX_BUS_NAME 24\r
-\r
-//\r
-// PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relations\r
-//\r
-#define PNP_GET_PARENT_DEVICE           1\r
-#define PNP_GET_CHILD_DEVICE            2\r
-#define PNP_GET_SIBLING_DEVICE          3\r
-\r
-//\r
-// PLUGPLAY_CONTROL_STATUS_DATA Operations\r
-//\r
-#define PNP_GET_DEVICE_STATUS           0\r
-#define PNP_SET_DEVICE_STATUS           1\r
-#define PNP_CLEAR_DEVICE_STATUS         2\r
-\r
-//\r
-// Resource Type\r
-//\r
-#define CmResourceTypeNull                      0\r
-#define CmResourceTypePort                      1\r
-#define CmResourceTypeInterrupt                 2\r
-#define CmResourceTypeMemory                    3\r
-#define CmResourceTypeDma                       4\r
-#define CmResourceTypeDeviceSpecific            5\r
-#define CmResourceTypeBusNumber                 6\r
-#define CmResourceTypeMaximum                   7\r
-#define CmResourceTypeNonArbitrated             128\r
-#define CmResourceTypeConfigData                128\r
-#define CmResourceTypeDevicePrivate             129\r
-#define CmResourceTypePcCardConfig              130\r
-#define CmResourceTypeMfCardConfig              131\r
-\r
-#ifdef NTOS_MODE_USER\r
-\r
-//\r
-// Resource Descriptor Share Dispositions\r
-//\r
-typedef enum _CM_SHARE_DISPOSITION\r
-{\r
-    CmResourceShareUndetermined,\r
-    CmResourceShareDeviceExclusive,\r
-    CmResourceShareDriverExclusive,\r
-    CmResourceShareShared\r
-} CM_SHARE_DISPOSITION;\r
-\r
-#endif\r
-\r
-//\r
-// Port Resource Descriptor Flags\r
-//\r
-#define CM_RESOURCE_PORT_MEMORY                 0x0000\r
-#define CM_RESOURCE_PORT_IO                     0x0001\r
-#define CM_RESOURCE_PORT_10_BIT_DECODE          0x0004\r
-#define CM_RESOURCE_PORT_12_BIT_DECODE          0x0008\r
-#define CM_RESOURCE_PORT_16_BIT_DECODE          0x0010\r
-#define CM_RESOURCE_PORT_POSITIVE_DECODE        0x0020\r
-#define CM_RESOURCE_PORT_PASSIVE_DECODE         0x0040\r
-#define CM_RESOURCE_PORT_WINDOW_DECODE          0x0080\r
-\r
-//\r
-// Memory Resource Descriptor Flags\r
-//\r
-#define CM_RESOURCE_MEMORY_READ_WRITE     0x0000\r
-#define CM_RESOURCE_MEMORY_READ_ONLY      0x0001\r
-#define CM_RESOURCE_MEMORY_WRITE_ONLY     0x0002\r
-#define CM_RESOURCE_MEMORY_PREFETCHABLE   0x0004\r
-#define CM_RESOURCE_MEMORY_COMBINEDWRITE  0x0008\r
-#define CM_RESOURCE_MEMORY_24             0x0010\r
-#define CM_RESOURCE_MEMORY_CACHEABLE      0x0020\r
-\r
-//\r
-// DMA Resource Descriptor Flags\r
-//\r
-#define CM_RESOURCE_DMA_8                 0x0000\r
-#define CM_RESOURCE_DMA_16                0x0001\r
-#define CM_RESOURCE_DMA_32                0x0002\r
-#define CM_RESOURCE_DMA_8_AND_16          0x0004\r
-#define CM_RESOURCE_DMA_BUS_MASTER        0x0008\r
-#define CM_RESOURCE_DMA_TYPE_A            0x0010\r
-#define CM_RESOURCE_DMA_TYPE_B            0x0020\r
-#define CM_RESOURCE_DMA_TYPE_F            0x0040\r
-\r
-#ifdef NTOS_MODE_USER\r
-\r
-//\r
-// Information Classes for NtQueryKey\r
-//\r
-typedef enum _KEY_INFORMATION_CLASS\r
-{\r
-    KeyBasicInformation,\r
-    KeyNodeInformation,\r
-    KeyFullInformation,\r
-    KeyNameInformation,\r
-    KeyCachedInformation,\r
-    KeyFlagsInformation\r
-} KEY_INFORMATION_CLASS;\r
-\r
-typedef enum _KEY_VALUE_INFORMATION_CLASS\r
-{\r
-    KeyValueBasicInformation,\r
-    KeyValueFullInformation,\r
-    KeyValuePartialInformation,\r
-    KeyValueFullInformationAlign64,\r
-    KeyValuePartialInformationAlign64\r
-} KEY_VALUE_INFORMATION_CLASS;\r
-\r
-typedef enum _KEY_SET_INFORMATION_CLASS\r
-{\r
-    KeyWriteTimeInformation,\r
-    KeyUserFlagsInformation,\r
-    MaxKeySetInfoClass\r
-} KEY_SET_INFORMATION_CLASS;\r
-\r
-#endif\r
-\r
-//\r
-// Plag and Play Classes\r
-//\r
-typedef enum _PLUGPLAY_CONTROL_CLASS\r
-{\r
-    PlugPlayControlUserResponse = 0x07,\r
-    PlugPlayControlProperty = 0x0A,\r
-    PlugPlayControlGetRelatedDevice = 0x0C,\r
-    PlugPlayControlDeviceStatus = 0x0E,\r
-    PlugPlayControlGetDeviceDepth,\r
-    PlugPlayControlResetDevice = 0x14\r
-} PLUGPLAY_CONTROL_CLASS;\r
-\r
-typedef enum _PLUGPLAY_BUS_CLASS\r
-{\r
-    SystemBus,\r
-    PlugPlayVirtualBus,\r
-    MaxPlugPlayBusClass\r
-} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;\r
-\r
-//\r
-// Plag and Play Bus Types\r
-//\r
-typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE\r
-{\r
-    Root,\r
-    MaxPlugPlayVirtualBusType\r
-} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;\r
-\r
-//\r
-// Plag and Play Event Categories\r
-//\r
-typedef enum _PLUGPLAY_EVENT_CATEGORY\r
-{\r
-    HardwareProfileChangeEvent,\r
-    TargetDeviceChangeEvent,\r
-    DeviceClassChangeEvent,\r
-    CustomDeviceEvent,\r
-    DeviceInstallEvent,\r
-    DeviceArrivalEvent,\r
-    PowerEvent,\r
-    VetoEvent,\r
-    BlockedDriverEvent,\r
-    MaxPlugEventCategory\r
-} PLUGPLAY_EVENT_CATEGORY;\r
-\r
-#ifdef NTOS_MODE_USER\r
-\r
-//\r
-// Information Structures for NtQueryKeyInformation\r
-//\r
-typedef struct _KEY_WRITE_TIME_INFORMATION\r
-{\r
-    LARGE_INTEGER LastWriteTime;\r
-} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;\r
-\r
-typedef struct _KEY_USER_FLAGS_INFORMATION\r
-{\r
-    ULONG UserFlags;\r
-} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;\r
-\r
-typedef struct _KEY_FULL_INFORMATION\r
-{\r
-    LARGE_INTEGER LastWriteTime;\r
-    ULONG TitleIndex;\r
-    ULONG ClassOffset;\r
-    ULONG ClassLength;\r
-    ULONG SubKeys;\r
-    ULONG MaxNameLen;\r
-    ULONG MaxClassLen;\r
-    ULONG Values;\r
-    ULONG MaxValueNameLen;\r
-    ULONG MaxValueDataLen;\r
-    WCHAR Class[1];\r
-} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;\r
-\r
-typedef struct _KEY_NODE_INFORMATION\r
-{\r
-    LARGE_INTEGER LastWriteTime;\r
-    ULONG TitleIndex;\r
-    ULONG ClassOffset;\r
-    ULONG ClassLength;\r
-    ULONG NameLength;\r
-    WCHAR Name[1];\r
-} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;\r
-\r
-typedef struct _KEY_VALUE_ENTRY\r
-{\r
-    PUNICODE_STRING ValueName;\r
-    ULONG DataLength;\r
-    ULONG DataOffset;\r
-    ULONG Type;\r
-} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;\r
-\r
-typedef struct _KEY_VALUE_PARTIAL_INFORMATION\r
-{\r
-    ULONG TitleIndex;\r
-    ULONG Type;\r
-    ULONG DataLength;\r
-    UCHAR Data[1];\r
-} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;\r
-\r
-typedef struct _KEY_VALUE_BASIC_INFORMATION\r
-{\r
-    ULONG TitleIndex;\r
-    ULONG Type;\r
-    ULONG NameLength;\r
-    WCHAR Name[1];\r
-} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;\r
-\r
-typedef struct _KEY_VALUE_FULL_INFORMATION\r
-{\r
-    ULONG TitleIndex;\r
-    ULONG Type;\r
-    ULONG DataOffset;\r
-    ULONG DataLength;\r
-    ULONG NameLength;\r
-    WCHAR Name[1];\r
-} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;\r
-\r
-typedef struct _KEY_BASIC_INFORMATION\r
-{\r
-    LARGE_INTEGER LastWriteTime;\r
-    ULONG TitleIndex;\r
-    ULONG NameLength;\r
-    WCHAR Name[1];\r
-} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;\r
-\r
-#endif\r
-\r
-//\r
-// Plug and Play Event Block\r
-//\r
-typedef struct _PLUGPLAY_EVENT_BLOCK\r
-{\r
-    GUID EventGuid;\r
-    PLUGPLAY_EVENT_CATEGORY EventCategory;\r
-    PULONG Result;\r
-    ULONG Flags;\r
-    ULONG TotalSize;\r
-    PVOID DeviceObject;\r
-    union\r
-    {\r
-        struct\r
-        {\r
-            GUID ClassGuid;\r
-            WCHAR SymbolicLinkName[ANYSIZE_ARRAY];\r
-        } DeviceClass;\r
-        struct\r
-        {\r
-            WCHAR DeviceIds[ANYSIZE_ARRAY];\r
-        } TargetDevice;\r
-        struct\r
-        {\r
-            WCHAR DeviceId[ANYSIZE_ARRAY];\r
-        } InstallDevice;\r
-        struct\r
-        {\r
-            PVOID NotificationStructure;\r
-            WCHAR DeviceIds[ANYSIZE_ARRAY];\r
-        } CustomNotification;\r
-        struct\r
-        {\r
-            PVOID Notification;\r
-        } ProfileNotification;\r
-        struct\r
-        {\r
-            ULONG NotificationCode;\r
-            ULONG NotificationData;\r
-        } PowerNotification;\r
-        struct\r
-        {\r
-            PNP_VETO_TYPE VetoType;\r
-            WCHAR DeviceIdVetoNameBuffer[ANYSIZE_ARRAY];\r
-        } VetoNotification;\r
-        struct\r
-        {\r
-            GUID BlockedDriverGuid;\r
-        } BlockedDriverNotification;\r
-    };\r
-} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;\r
-\r
-//\r
-// Plug and Play Control Classes\r
-//\r
-\r
-//Class 0x0A\r
-typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA\r
-{\r
-    UNICODE_STRING DeviceInstance;\r
-    ULONG Property;\r
-    PVOID Buffer;\r
-    ULONG BufferSize;\r
-} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA;\r
-\r
-// Class 0x0C\r
-typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA\r
-{\r
-    UNICODE_STRING TargetDeviceInstance;\r
-    ULONG Relation;\r
-    UNICODE_STRING RelatedDeviceInstance;\r
-} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA;\r
-\r
-// Class 0x0E\r
-typedef struct _PLUGPLAY_CONTOL_STATUS_DATA\r
-{\r
-    UNICODE_STRING DeviceInstance;\r
-    ULONG Operation;\r
-    ULONG DeviceStatus;\r
-    ULONG DeviceProblem;\r
-} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA;\r
-\r
-// Class 0x0F\r
-typedef struct _PLUGPLAY_CONTROL_DEPTH_DATA\r
-{\r
-    UNICODE_STRING DeviceInstance;\r
-    ULONG Depth;\r
-} PLUGPLAY_CONTROL_DEPTH_DATA, *PPLUGPLAY_CONTROL_DEPTH_DATA;\r
-\r
-// Class 0x14\r
-typedef struct _PLUGPLAY_CONTROL_RESET_DEVICE_DATA\r
-{\r
-   UNICODE_STRING DeviceInstance;\r
-} PLUGPLAY_CONTROL_RESET_DEVICE_DATA, *PPLUGPLAY_CONTROL_RESET_DEVICE_DATA;\r
-\r
-//\r
-// Plug and Play Bus Type Definition\r
-//\r
-typedef struct _PLUGPLAY_BUS_TYPE\r
-{\r
-    PLUGPLAY_BUS_CLASS BusClass;\r
-    union\r
-    {\r
-        INTERFACE_TYPE SystemBusType;\r
-        PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;\r
-    };\r
-} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;\r
-\r
-//\r
-// Plug and Play Bus Instance Definition\r
-//\r
-typedef struct _PLUGPLAY_BUS_INSTANCE\r
-{\r
-    PLUGPLAY_BUS_TYPE BusType;\r
-    ULONG BusNumber;\r
-    WCHAR BusName[MAX_BUS_NAME];\r
-} PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;\r
-\r
-#ifdef NTOS_MODE_USER\r
-\r
-//\r
-// Partial Resource Descriptor and List for Hardware\r
-//\r
-#include <pshpack1.h>\r
-typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR\r
-{\r
-    UCHAR Type;\r
-    UCHAR ShareDisposition;\r
-    USHORT Flags;\r
-    union\r
-    {\r
-        struct\r
-        {\r
-            PHYSICAL_ADDRESS Start;\r
-            ULONG Length;\r
-        } Generic;\r
-        struct\r
-        {\r
-            PHYSICAL_ADDRESS Start;\r
-            ULONG Length;\r
-        } Port;\r
-        struct\r
-        {\r
-            ULONG Level;\r
-            ULONG Vector;\r
-            ULONG Affinity;\r
-        } Interrupt;\r
-        struct\r
-        {\r
-            PHYSICAL_ADDRESS Start;\r
-            ULONG Length;\r
-        } Memory;\r
-        struct\r
-        {\r
-            ULONG Channel;\r
-            ULONG Port;\r
-            ULONG Reserved1;\r
-        } Dma;\r
-        struct\r
-        {\r
-          ULONG Data[3];\r
-        } DevicePrivate;\r
-        struct\r
-        {\r
-            ULONG Start;\r
-            ULONG Length;\r
-            ULONG Reserved;\r
-        } BusNumber;\r
-        struct\r
-        {\r
-            ULONG DataSize;\r
-            ULONG Reserved1;\r
-            ULONG Reserved2;\r
-        } DeviceSpecificData;\r
-    } u;\r
-} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;\r
-\r
-typedef struct _CM_PARTIAL_RESOURCE_LIST\r
-{\r
-    USHORT Version;\r
-    USHORT Revision;\r
-    ULONG Count;\r
-    CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];\r
-} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;\r
-\r
-//\r
-// Full Resource Descriptor and List for Hardware\r
-//\r
-typedef struct _CM_FULL_RESOURCE_DESCRIPTOR\r
-{\r
-    INTERFACE_TYPE InterfaceType;\r
-    ULONG BusNumber;\r
-    CM_PARTIAL_RESOURCE_LIST PartialResourceList;\r
-} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;\r
-\r
-typedef struct _CM_RESOURCE_LIST\r
-{\r
-    ULONG Count;\r
-    CM_FULL_RESOURCE_DESCRIPTOR List[1];\r
-} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;\r
-\r
-//\r
-// Disk/INT13 Structures\r
-//\r
-typedef struct _CM_INT13_DRIVE_PARAMETER\r
-{\r
-    USHORT DriveSelect;\r
-    ULONG MaxCylinders;\r
-    USHORT SectorsPerTrack;\r
-    USHORT MaxHeads;\r
-    USHORT NumberDrives;\r
-} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;\r
-\r
-typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA\r
-{\r
-    ULONG BytesPerSector;\r
-    ULONG NumberOfCylinders;\r
-    ULONG SectorsPerTrack;\r
-    ULONG NumberOfHeads;\r
-} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;\r
-\r
-#include <poppack.h>\r
-\r
-#endif // _!NTOS_MODE_USER\r
-\r
-#endif // _CMTYPES_H\r
-\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    cmtypes.h
+
+Abstract:
+
+    Type definitions for the Configuration Manager.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _CMTYPES_H
+#define _CMTYPES_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+#include <cfg.h>
+#include <iotypes.h>
+
+#define MAX_BUS_NAME 24
+
+//
+// PLUGPLAY_CONTROL_RELATED_DEVICE_DATA.Relations
+//
+#define PNP_GET_PARENT_DEVICE           1
+#define PNP_GET_CHILD_DEVICE            2
+#define PNP_GET_SIBLING_DEVICE          3
+
+//
+// PLUGPLAY_CONTROL_STATUS_DATA Operations
+//
+#define PNP_GET_DEVICE_STATUS           0
+#define PNP_SET_DEVICE_STATUS           1
+#define PNP_CLEAR_DEVICE_STATUS         2
+
+//
+// Resource Type
+//
+#define CmResourceTypeNull                      0
+#define CmResourceTypePort                      1
+#define CmResourceTypeInterrupt                 2
+#define CmResourceTypeMemory                    3
+#define CmResourceTypeDma                       4
+#define CmResourceTypeDeviceSpecific            5
+#define CmResourceTypeBusNumber                 6
+#define CmResourceTypeMaximum                   7
+#define CmResourceTypeNonArbitrated             128
+#define CmResourceTypeConfigData                128
+#define CmResourceTypeDevicePrivate             129
+#define CmResourceTypePcCardConfig              130
+#define CmResourceTypeMfCardConfig              131
+
+#ifdef NTOS_MODE_USER
+
+//
+// Resource Descriptor Share Dispositions
+//
+typedef enum _CM_SHARE_DISPOSITION
+{
+    CmResourceShareUndetermined,
+    CmResourceShareDeviceExclusive,
+    CmResourceShareDriverExclusive,
+    CmResourceShareShared
+} CM_SHARE_DISPOSITION;
+
+#endif
+
+//
+// Port Resource Descriptor Flags
+//
+#define CM_RESOURCE_PORT_MEMORY                 0x0000
+#define CM_RESOURCE_PORT_IO                     0x0001
+#define CM_RESOURCE_PORT_10_BIT_DECODE          0x0004
+#define CM_RESOURCE_PORT_12_BIT_DECODE          0x0008
+#define CM_RESOURCE_PORT_16_BIT_DECODE          0x0010
+#define CM_RESOURCE_PORT_POSITIVE_DECODE        0x0020
+#define CM_RESOURCE_PORT_PASSIVE_DECODE         0x0040
+#define CM_RESOURCE_PORT_WINDOW_DECODE          0x0080
+
+//
+// Memory Resource Descriptor Flags
+//
+#define CM_RESOURCE_MEMORY_READ_WRITE     0x0000
+#define CM_RESOURCE_MEMORY_READ_ONLY      0x0001
+#define CM_RESOURCE_MEMORY_WRITE_ONLY     0x0002
+#define CM_RESOURCE_MEMORY_PREFETCHABLE   0x0004
+#define CM_RESOURCE_MEMORY_COMBINEDWRITE  0x0008
+#define CM_RESOURCE_MEMORY_24             0x0010
+#define CM_RESOURCE_MEMORY_CACHEABLE      0x0020
+
+//
+// DMA Resource Descriptor Flags
+//
+#define CM_RESOURCE_DMA_8                 0x0000
+#define CM_RESOURCE_DMA_16                0x0001
+#define CM_RESOURCE_DMA_32                0x0002
+#define CM_RESOURCE_DMA_8_AND_16          0x0004
+#define CM_RESOURCE_DMA_BUS_MASTER        0x0008
+#define CM_RESOURCE_DMA_TYPE_A            0x0010
+#define CM_RESOURCE_DMA_TYPE_B            0x0020
+#define CM_RESOURCE_DMA_TYPE_F            0x0040
+
+#ifdef NTOS_MODE_USER
+
+//
+// Information Classes for NtQueryKey
+//
+typedef enum _KEY_INFORMATION_CLASS
+{
+    KeyBasicInformation,
+    KeyNodeInformation,
+    KeyFullInformation,
+    KeyNameInformation,
+    KeyCachedInformation,
+    KeyFlagsInformation
+} KEY_INFORMATION_CLASS;
+
+typedef enum _KEY_VALUE_INFORMATION_CLASS
+{
+    KeyValueBasicInformation,
+    KeyValueFullInformation,
+    KeyValuePartialInformation,
+    KeyValueFullInformationAlign64,
+    KeyValuePartialInformationAlign64
+} KEY_VALUE_INFORMATION_CLASS;
+
+typedef enum _KEY_SET_INFORMATION_CLASS
+{
+    KeyWriteTimeInformation,
+    KeyUserFlagsInformation,
+    MaxKeySetInfoClass
+} KEY_SET_INFORMATION_CLASS;
+
+#endif
+
+//
+// Plag and Play Classes
+//
+typedef enum _PLUGPLAY_CONTROL_CLASS
+{
+    PlugPlayControlUserResponse = 0x07,
+    PlugPlayControlProperty = 0x0A,
+    PlugPlayControlGetRelatedDevice = 0x0C,
+    PlugPlayControlDeviceStatus = 0x0E,
+    PlugPlayControlGetDeviceDepth,
+    PlugPlayControlResetDevice = 0x14
+} PLUGPLAY_CONTROL_CLASS;
+
+typedef enum _PLUGPLAY_BUS_CLASS
+{
+    SystemBus,
+    PlugPlayVirtualBus,
+    MaxPlugPlayBusClass
+} PLUGPLAY_BUS_CLASS, *PPLUGPLAY_BUS_CLASS;
+
+//
+// Plag and Play Bus Types
+//
+typedef enum _PLUGPLAY_VIRTUAL_BUS_TYPE
+{
+    Root,
+    MaxPlugPlayVirtualBusType
+} PLUGPLAY_VIRTUAL_BUS_TYPE, *PPLUGPLAY_VIRTUAL_BUS_TYPE;
+
+//
+// Plag and Play Event Categories
+//
+typedef enum _PLUGPLAY_EVENT_CATEGORY
+{
+    HardwareProfileChangeEvent,
+    TargetDeviceChangeEvent,
+    DeviceClassChangeEvent,
+    CustomDeviceEvent,
+    DeviceInstallEvent,
+    DeviceArrivalEvent,
+    PowerEvent,
+    VetoEvent,
+    BlockedDriverEvent,
+    MaxPlugEventCategory
+} PLUGPLAY_EVENT_CATEGORY;
+
+#ifdef NTOS_MODE_USER
+
+//
+// Information Structures for NtQueryKeyInformation
+//
+typedef struct _KEY_WRITE_TIME_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
+
+typedef struct _KEY_USER_FLAGS_INFORMATION
+{
+    ULONG UserFlags;
+} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;
+
+typedef struct _KEY_FULL_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG TitleIndex;
+    ULONG ClassOffset;
+    ULONG ClassLength;
+    ULONG SubKeys;
+    ULONG MaxNameLen;
+    ULONG MaxClassLen;
+    ULONG Values;
+    ULONG MaxValueNameLen;
+    ULONG MaxValueDataLen;
+    WCHAR Class[1];
+} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+
+typedef struct _KEY_NODE_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG TitleIndex;
+    ULONG ClassOffset;
+    ULONG ClassLength;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
+
+typedef struct _KEY_VALUE_ENTRY
+{
+    PUNICODE_STRING ValueName;
+    ULONG DataLength;
+    ULONG DataOffset;
+    ULONG Type;
+} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
+
+typedef struct _KEY_VALUE_PARTIAL_INFORMATION
+{
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG DataLength;
+    UCHAR Data[1];
+} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
+
+typedef struct _KEY_VALUE_BASIC_INFORMATION
+{
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
+
+typedef struct _KEY_VALUE_FULL_INFORMATION
+{
+    ULONG TitleIndex;
+    ULONG Type;
+    ULONG DataOffset;
+    ULONG DataLength;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
+
+typedef struct _KEY_BASIC_INFORMATION
+{
+    LARGE_INTEGER LastWriteTime;
+    ULONG TitleIndex;
+    ULONG NameLength;
+    WCHAR Name[1];
+} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
+
+#endif
+
+//
+// Plug and Play Event Block
+//
+typedef struct _PLUGPLAY_EVENT_BLOCK
+{
+    GUID EventGuid;
+    PLUGPLAY_EVENT_CATEGORY EventCategory;
+    PULONG Result;
+    ULONG Flags;
+    ULONG TotalSize;
+    PVOID DeviceObject;
+    union
+    {
+        struct
+        {
+            GUID ClassGuid;
+            WCHAR SymbolicLinkName[ANYSIZE_ARRAY];
+        } DeviceClass;
+        struct
+        {
+            WCHAR DeviceIds[ANYSIZE_ARRAY];
+        } TargetDevice;
+        struct
+        {
+            WCHAR DeviceId[ANYSIZE_ARRAY];
+        } InstallDevice;
+        struct
+        {
+            PVOID NotificationStructure;
+            WCHAR DeviceIds[ANYSIZE_ARRAY];
+        } CustomNotification;
+        struct
+        {
+            PVOID Notification;
+        } ProfileNotification;
+        struct
+        {
+            ULONG NotificationCode;
+            ULONG NotificationData;
+        } PowerNotification;
+        struct
+        {
+            PNP_VETO_TYPE VetoType;
+            WCHAR DeviceIdVetoNameBuffer[ANYSIZE_ARRAY];
+        } VetoNotification;
+        struct
+        {
+            GUID BlockedDriverGuid;
+        } BlockedDriverNotification;
+    };
+} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;
+
+//
+// Plug and Play Control Classes
+//
+
+//Class 0x0A
+typedef struct _PLUGPLAY_CONTROL_PROPERTY_DATA
+{
+    UNICODE_STRING DeviceInstance;
+    ULONG Property;
+    PVOID Buffer;
+    ULONG BufferSize;
+} PLUGPLAY_CONTROL_PROPERTY_DATA, *PPLUGPLAY_CONTROL_PROPERTY_DATA;
+
+// Class 0x0C
+typedef struct _PLUGPLAY_CONTROL_RELATED_DEVICE_DATA
+{
+    UNICODE_STRING TargetDeviceInstance;
+    ULONG Relation;
+    UNICODE_STRING RelatedDeviceInstance;
+} PLUGPLAY_CONTROL_RELATED_DEVICE_DATA, *PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA;
+
+// Class 0x0E
+typedef struct _PLUGPLAY_CONTOL_STATUS_DATA
+{
+    UNICODE_STRING DeviceInstance;
+    ULONG Operation;
+    ULONG DeviceStatus;
+    ULONG DeviceProblem;
+} PLUGPLAY_CONTROL_STATUS_DATA, *PPLUGPLAY_CONTROL_STATUS_DATA;
+
+// Class 0x0F
+typedef struct _PLUGPLAY_CONTROL_DEPTH_DATA
+{
+    UNICODE_STRING DeviceInstance;
+    ULONG Depth;
+} PLUGPLAY_CONTROL_DEPTH_DATA, *PPLUGPLAY_CONTROL_DEPTH_DATA;
+
+// Class 0x14
+typedef struct _PLUGPLAY_CONTROL_RESET_DEVICE_DATA
+{
+   UNICODE_STRING DeviceInstance;
+} PLUGPLAY_CONTROL_RESET_DEVICE_DATA, *PPLUGPLAY_CONTROL_RESET_DEVICE_DATA;
+
+//
+// Plug and Play Bus Type Definition
+//
+typedef struct _PLUGPLAY_BUS_TYPE
+{
+    PLUGPLAY_BUS_CLASS BusClass;
+    union
+    {
+        INTERFACE_TYPE SystemBusType;
+        PLUGPLAY_VIRTUAL_BUS_TYPE PlugPlayVirtualBusType;
+    };
+} PLUGPLAY_BUS_TYPE, *PPLUGPLAY_BUS_TYPE;
+
+//
+// Plug and Play Bus Instance Definition
+//
+typedef struct _PLUGPLAY_BUS_INSTANCE
+{
+    PLUGPLAY_BUS_TYPE BusType;
+    ULONG BusNumber;
+    WCHAR BusName[MAX_BUS_NAME];
+} PLUGPLAY_BUS_INSTANCE, *PPLUGPLAY_BUS_INSTANCE;
+
+#ifdef NTOS_MODE_USER
+
+//
+// Partial Resource Descriptor and List for Hardware
+//
+#include <pshpack1.h>
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
+{
+    UCHAR Type;
+    UCHAR ShareDisposition;
+    USHORT Flags;
+    union
+    {
+        struct
+        {
+            PHYSICAL_ADDRESS Start;
+            ULONG Length;
+        } Generic;
+        struct
+        {
+            PHYSICAL_ADDRESS Start;
+            ULONG Length;
+        } Port;
+        struct
+        {
+            ULONG Level;
+            ULONG Vector;
+            ULONG Affinity;
+        } Interrupt;
+        struct
+        {
+            PHYSICAL_ADDRESS Start;
+            ULONG Length;
+        } Memory;
+        struct
+        {
+            ULONG Channel;
+            ULONG Port;
+            ULONG Reserved1;
+        } Dma;
+        struct
+        {
+          ULONG Data[3];
+        } DevicePrivate;
+        struct
+        {
+            ULONG Start;
+            ULONG Length;
+            ULONG Reserved;
+        } BusNumber;
+        struct
+        {
+            ULONG DataSize;
+            ULONG Reserved1;
+            ULONG Reserved2;
+        } DeviceSpecificData;
+    } u;
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
+
+typedef struct _CM_PARTIAL_RESOURCE_LIST
+{
+    USHORT Version;
+    USHORT Revision;
+    ULONG Count;
+    CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
+} CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
+
+//
+// Full Resource Descriptor and List for Hardware
+//
+typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
+{
+    INTERFACE_TYPE InterfaceType;
+    ULONG BusNumber;
+    CM_PARTIAL_RESOURCE_LIST PartialResourceList;
+} CM_FULL_RESOURCE_DESCRIPTOR, *PCM_FULL_RESOURCE_DESCRIPTOR;
+
+typedef struct _CM_RESOURCE_LIST
+{
+    ULONG Count;
+    CM_FULL_RESOURCE_DESCRIPTOR List[1];
+} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
+
+//
+// Disk/INT13 Structures
+//
+typedef struct _CM_INT13_DRIVE_PARAMETER
+{
+    USHORT DriveSelect;
+    ULONG MaxCylinders;
+    USHORT SectorsPerTrack;
+    USHORT MaxHeads;
+    USHORT NumberDrives;
+} CM_INT13_DRIVE_PARAMETER, *PCM_INT13_DRIVE_PARAMETER;
+
+typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
+{
+    ULONG BytesPerSector;
+    ULONG NumberOfCylinders;
+    ULONG SectorsPerTrack;
+    ULONG NumberOfHeads;
+} CM_DISK_GEOMETRY_DEVICE_DATA, *PCM_DISK_GEOMETRY_DEVICE_DATA;
+
+#include <poppack.h>
+
+#endif // _!NTOS_MODE_USER
+
+#endif // _CMTYPES_H
+
index 9fa0057..0600853 100644 (file)
@@ -1,87 +1,87 @@
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    dbgkfuncs.h\r
-\r
-Abstract:\r
-\r
-    Function definitions for the User Mode Debugging Facility.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _DBGKFUNCS_H\r
-#define _DBGKFUNCS_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-\r
-//\r
-// Native calls\r
-//\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateDebugObject(\r
-    OUT PHANDLE DebugHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN BOOLEAN KillProcessOnExit\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtDebugContinue(\r
-    IN HANDLE DebugObject,\r
-    IN PCLIENT_ID AppClientId,\r
-    IN NTSTATUS ContinueStatus\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtWaitForDebugEvent(\r
-    IN HANDLE DebugObject,\r
-    IN BOOLEAN Alertable,\r
-    IN PLARGE_INTEGER Timeout OPTIONAL,\r
-    OUT PDBGUI_WAIT_STATE_CHANGE StateChange\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateDebugObject(\r
-    OUT PHANDLE DebugHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN BOOLEAN KillProcessOnExit\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwDebugContinue(\r
-    IN HANDLE DebugObject,\r
-    IN PCLIENT_ID AppClientId,\r
-    IN NTSTATUS ContinueStatus\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwWaitForDebugEvent(\r
-    IN HANDLE DebugObject,\r
-    IN BOOLEAN Alertable,\r
-    IN PLARGE_INTEGER Timeout OPTIONAL,\r
-    OUT PDBGUI_WAIT_STATE_CHANGE StateChange\r
-);\r
-#endif\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    dbgkfuncs.h
+
+Abstract:
+
+    Function definitions for the User Mode Debugging Facility.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _DBGKFUNCS_H
+#define _DBGKFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+
+//
+// Native calls
+//
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateDebugObject(
+    OUT PHANDLE DebugHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN KillProcessOnExit
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDebugContinue(
+    IN HANDLE DebugObject,
+    IN PCLIENT_ID AppClientId,
+    IN NTSTATUS ContinueStatus
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtWaitForDebugEvent(
+    IN HANDLE DebugObject,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Timeout OPTIONAL,
+    OUT PDBGUI_WAIT_STATE_CHANGE StateChange
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwCreateDebugObject(
+    OUT PHANDLE DebugHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN KillProcessOnExit
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwDebugContinue(
+    IN HANDLE DebugObject,
+    IN PCLIENT_ID AppClientId,
+    IN NTSTATUS ContinueStatus
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwWaitForDebugEvent(
+    IN HANDLE DebugObject,
+    IN BOOLEAN Alertable,
+    IN PLARGE_INTEGER Timeout OPTIONAL,
+    OUT PDBGUI_WAIT_STATE_CHANGE StateChange
+);
+#endif
index 56af91f..f4c52a4 100644 (file)
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    exfuncs.h\r
-\r
-Abstract:\r
-\r
-    Function definitions for the Executive.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _EXFUNCS_H\r
-#define _EXFUNCS_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-#include <pstypes.h>\r
-#include <extypes.h>\r
-\r
-//\r
-// Don't include WMI headers just for one define\r
-//\r
-typedef struct _EVENT_TRACE_HEADER *PEVENT_TRACE_HEADER;\r
-\r
-#ifndef NTOS_MODE_USER\r
-//\r
-// Fast Mutex functions\r
-//\r
-VOID\r
-FASTCALL\r
-ExEnterCriticalRegionAndAcquireFastMutexUnsafe(\r
-    PFAST_MUTEX FastMutex\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(\r
-    PFAST_MUTEX FastMutex\r
-);\r
-\r
-//\r
-// Pushlock functions\r
-//\r
-VOID\r
-FASTCALL\r
-ExfAcquirePushLockExclusive(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfAcquirePushLockShared(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfReleasePushLock(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfReleasePushLockExclusive(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfReleasePushLockShared(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfTryToWakePushLock(\r
-    PEX_PUSH_LOCK PushLock\r
-);\r
-\r
-VOID\r
-FASTCALL\r
-ExfUnblockPushLock(\r
-    PEX_PUSH_LOCK PushLock,\r
-    PVOID CurrentWaitBlock\r
-);\r
-\r
-#endif\r
-\r
-//\r
-// Native Calls\r
-//\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtAddAtom(\r
-    IN PWSTR AtomName,\r
-    IN ULONG AtomNameLength,\r
-    IN OUT PRTL_ATOM Atom\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCancelTimer(\r
-    IN HANDLE TimerHandle,\r
-    OUT PBOOLEAN CurrentState OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtClearEvent(\r
-    IN HANDLE EventHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateEvent(\r
-    OUT PHANDLE EventHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN EVENT_TYPE EventType,\r
-    IN BOOLEAN InitialState\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateEventPair(\r
-    OUT PHANDLE EventPairHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateMutant(\r
-    OUT PHANDLE MutantHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN BOOLEAN InitialOwner\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateSemaphore(\r
-    OUT PHANDLE SemaphoreHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\r
-    IN LONG InitialCount,\r
-    IN LONG MaximumCount\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtCreateTimer(\r
-    OUT PHANDLE TimerHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\r
-    IN TIMER_TYPE TimerType\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtDeleteAtom(\r
-    IN RTL_ATOM Atom\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtDisplayString(\r
-    IN PUNICODE_STRING DisplayString\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtFindAtom(\r
-    IN  PWSTR AtomName,\r
-    IN  ULONG AtomNameLength,\r
-    OUT PRTL_ATOM Atom OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenEvent(\r
-    OUT PHANDLE EventHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenEventPair(\r
-    OUT PHANDLE EventPairHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenMutant(\r
-    OUT PHANDLE MutantHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenSemaphore(\r
-    OUT PHANDLE SemaphoreHandle,\r
-    IN ACCESS_MASK DesiredAcces,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtOpenTimer(\r
-    OUT PHANDLE TimerHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtPulseEvent(\r
-    IN HANDLE EventHandle,\r
-    IN PLONG PulseCount OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryDefaultLocale(\r
-    IN BOOLEAN UserProfile,\r
-    OUT PLCID DefaultLocaleId\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryDefaultUILanguage(\r
-    PLANGID LanguageId\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryEvent(\r
-    IN HANDLE EventHandle,\r
-    IN EVENT_INFORMATION_CLASS EventInformationClass,\r
-    OUT PVOID EventInformation,\r
-    IN ULONG EventInformationLength,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryInformationAtom(\r
-    IN  RTL_ATOM Atom,\r
-    IN  ATOM_INFORMATION_CLASS AtomInformationClass,\r
-    OUT PVOID AtomInformation,\r
-    IN  ULONG AtomInformationLength,\r
-    OUT PULONG ReturnLength OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryInstallUILanguage(\r
-    PLANGID LanguageId\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryMutant(\r
-    IN HANDLE MutantHandle,\r
-    IN MUTANT_INFORMATION_CLASS MutantInformationClass,\r
-    OUT PVOID MutantInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQuerySemaphore(\r
-    IN HANDLE SemaphoreHandle,\r
-    IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,\r
-    OUT PVOID SemaphoreInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQuerySystemEnvironmentValue(\r
-    IN PUNICODE_STRING Name,\r
-    OUT PWSTR Value,\r
-    ULONG Length,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQuerySystemInformation(\r
-    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,\r
-    OUT PVOID SystemInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtQueryTimer(\r
-    IN HANDLE TimerHandle,\r
-    IN TIMER_INFORMATION_CLASS TimerInformationClass,\r
-    OUT PVOID TimerInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtRaiseHardError(\r
-    IN NTSTATUS ErrorStatus,\r
-    IN ULONG NumberOfParameters,\r
-    IN ULONG UnicodeStringParameterMask,\r
-    IN PULONG_PTR Parameters,\r
-    IN ULONG ValidResponseOptions,\r
-    OUT PULONG Response\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtReleaseMutant(\r
-    IN HANDLE MutantHandle,\r
-    IN PLONG ReleaseCount OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtReleaseSemaphore(\r
-    IN HANDLE SemaphoreHandle,\r
-    IN LONG ReleaseCount,\r
-    OUT PLONG PreviousCount\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtResetEvent(\r
-    IN HANDLE EventHandle,\r
-    OUT PLONG NumberOfWaitingThreads OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultLocale(\r
-    IN BOOLEAN UserProfile,\r
-    IN LCID DefaultLocaleId\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultUILanguage(\r
-    LANGID LanguageId\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultHardErrorPort(\r
-    IN HANDLE PortHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetEvent(\r
-    IN HANDLE EventHandle,\r
-    OUT PLONG PreviousState  OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetHighEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetHighWaitLowEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetLowEventPair(\r
-    HANDLE EventPair\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetLowWaitHighEventPair(\r
-    HANDLE EventPair\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetSystemEnvironmentValue(\r
-    IN PUNICODE_STRING VariableName,\r
-    IN PUNICODE_STRING Value\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetSystemInformation(\r
-    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,\r
-    IN PVOID SystemInformation,\r
-    IN ULONG SystemInformationLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetTimer(\r
-    IN HANDLE TimerHandle,\r
-    IN PLARGE_INTEGER DueTime,\r
-    IN PTIMER_APC_ROUTINE TimerApcRoutine,\r
-    IN PVOID TimerContext,\r
-    IN BOOLEAN WakeTimer,\r
-    IN LONG Period OPTIONAL,\r
-    OUT PBOOLEAN PreviousState OPTIONAL\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetUuidSeed(\r
-    IN PUCHAR UuidSeed\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtShutdownSystem(\r
-    IN SHUTDOWN_ACTION Action\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtWaitHighEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtWaitLowEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtTraceEvent(\r
-    IN ULONG TraceHandle,\r
-    IN ULONG Flags,\r
-    IN ULONG TraceHeaderLength,\r
-    IN PEVENT_TRACE_HEADER TraceHeader\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwAddAtom(\r
-    IN PWSTR AtomName,\r
-    IN ULONG AtomNameLength,\r
-    IN OUT PRTL_ATOM Atom\r
-);\r
-\r
-#ifdef NTOS_MODE_USER\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCancelTimer(\r
-    IN HANDLE TimerHandle,\r
-    OUT PBOOLEAN CurrentState OPTIONAL\r
-);\r
-#endif\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwClearEvent(\r
-    IN HANDLE EventHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateEvent(\r
-    OUT PHANDLE EventHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN EVENT_TYPE EventType,\r
-    IN BOOLEAN InitialState\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateEventPair(\r
-    OUT PHANDLE EventPairHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateMutant(\r
-    OUT PHANDLE MutantHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes,\r
-    IN BOOLEAN InitialOwner\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateSemaphore(\r
-    OUT PHANDLE SemaphoreHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\r
-    IN LONG InitialCount,\r
-    IN LONG MaximumCount\r
-);\r
-\r
-#ifdef NTOS_MODE_USER\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateTimer(\r
-    OUT PHANDLE TimerHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,\r
-    IN TIMER_TYPE TimerType\r
-);\r
-#endif\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwDeleteAtom(\r
-    IN RTL_ATOM Atom\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwDisplayString(\r
-    IN PUNICODE_STRING DisplayString\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwFindAtom(\r
-    IN  PWSTR AtomName,\r
-    IN  ULONG AtomNameLength,\r
-    OUT PRTL_ATOM Atom OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenEvent(\r
-    OUT PHANDLE EventHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenEventPair(\r
-    OUT PHANDLE EventPairHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenMutant(\r
-    OUT PHANDLE MutantHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenSemaphore(\r
-    OUT PHANDLE SemaphoreHandle,\r
-    IN ACCESS_MASK DesiredAcces,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-#ifdef NTOS_MODE_USER\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenTimer(\r
-    OUT PHANDLE TimerHandle,\r
-    IN ACCESS_MASK DesiredAccess,\r
-    IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-#endif\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwPulseEvent(\r
-    IN HANDLE EventHandle,\r
-    IN PLONG PulseCount OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryDefaultLocale(\r
-    IN BOOLEAN UserProfile,\r
-    OUT PLCID DefaultLocaleId\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryDefaultUILanguage(\r
-    PLANGID LanguageId\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryEvent(\r
-    IN HANDLE EventHandle,\r
-    IN EVENT_INFORMATION_CLASS EventInformationClass,\r
-    OUT PVOID EventInformation,\r
-    IN ULONG EventInformationLength,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryInformationAtom(\r
-    IN  RTL_ATOM Atom,\r
-    IN  ATOM_INFORMATION_CLASS AtomInformationClass,\r
-    OUT PVOID AtomInformation,\r
-    IN  ULONG AtomInformationLength,\r
-    OUT PULONG ReturnLength OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryInstallUILanguage(\r
-    PLANGID LanguageId\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryMutant(\r
-    IN HANDLE MutantHandle,\r
-    IN MUTANT_INFORMATION_CLASS MutantInformationClass,\r
-    OUT PVOID MutantInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQuerySemaphore(\r
-    IN HANDLE SemaphoreHandle,\r
-    IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,\r
-    OUT PVOID SemaphoreInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ReturnLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQuerySystemEnvironmentValue(\r
-    IN PUNICODE_STRING Name,\r
-    OUT PWSTR Value,\r
-    ULONG Length,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQuerySystemInformation(\r
-    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,\r
-    OUT PVOID SystemInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryTimer(\r
-    IN HANDLE TimerHandle,\r
-    IN TIMER_INFORMATION_CLASS TimerInformationClass,\r
-    OUT PVOID TimerInformation,\r
-    IN ULONG Length,\r
-    OUT PULONG ResultLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwRaiseHardError(\r
-    IN NTSTATUS ErrorStatus,\r
-    IN ULONG NumberOfParameters,\r
-    IN ULONG UnicodeStringParameterMask,\r
-    IN PULONG_PTR Parameters,\r
-    IN ULONG ValidResponseOptions,\r
-    OUT PULONG Response\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwReleaseMutant(\r
-    IN HANDLE MutantHandle,\r
-    IN PLONG ReleaseCount OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwReleaseSemaphore(\r
-    IN HANDLE SemaphoreHandle,\r
-    IN LONG ReleaseCount,\r
-    OUT PLONG PreviousCount\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwResetEvent(\r
-    IN HANDLE EventHandle,\r
-    OUT PLONG NumberOfWaitingThreads OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetDefaultLocale(\r
-    IN BOOLEAN UserProfile,\r
-    IN LCID DefaultLocaleId\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetDefaultUILanguage(\r
-    LANGID LanguageId\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetDefaultHardErrorPort(\r
-    IN HANDLE PortHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetEvent(\r
-    IN HANDLE EventHandle,\r
-    OUT PLONG PreviousState  OPTIONAL\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetHighEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetHighWaitLowEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetLowEventPair(\r
-    HANDLE EventPair\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetLowWaitHighEventPair(\r
-    HANDLE EventPair\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetSystemEnvironmentValue(\r
-    IN PUNICODE_STRING VariableName,\r
-    IN PUNICODE_STRING Value\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetSystemInformation(\r
-    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,\r
-    IN PVOID SystemInformation,\r
-    IN ULONG SystemInformationLength\r
-);\r
-\r
-#ifdef NTOS_MODE_USER\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetTimer(\r
-    IN HANDLE TimerHandle,\r
-    IN PLARGE_INTEGER DueTime,\r
-    IN PTIMER_APC_ROUTINE TimerApcRoutine,\r
-    IN PVOID TimerContext,\r
-    IN BOOLEAN WakeTimer,\r
-    IN LONG Period OPTIONAL,\r
-    OUT PBOOLEAN PreviousState OPTIONAL\r
-);\r
-#endif\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetUuidSeed(\r
-    IN PUCHAR UuidSeed\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwShutdownSystem(\r
-    IN SHUTDOWN_ACTION Action\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwWaitHighEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwWaitLowEventPair(\r
-    IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwTraceEvent(\r
-    IN ULONG TraceHandle,\r
-    IN ULONG Flags,\r
-    IN ULONG TraceHeaderLength,\r
-    IN PEVENT_TRACE_HEADER TraceHeader\r
-);\r
-#endif\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    exfuncs.h
+
+Abstract:
+
+    Function definitions for the Executive.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _EXFUNCS_H
+#define _EXFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+#include <pstypes.h>
+#include <extypes.h>
+
+//
+// Don't include WMI headers just for one define
+//
+typedef struct _EVENT_TRACE_HEADER *PEVENT_TRACE_HEADER;
+
+#ifndef NTOS_MODE_USER
+//
+// Fast Mutex functions
+//
+VOID
+FASTCALL
+ExEnterCriticalRegionAndAcquireFastMutexUnsafe(
+    PFAST_MUTEX FastMutex
+);
+
+VOID
+FASTCALL
+ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
+    PFAST_MUTEX FastMutex
+);
+
+//
+// Pushlock functions
+//
+VOID
+FASTCALL
+ExfAcquirePushLockExclusive(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfAcquirePushLockShared(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfReleasePushLock(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfReleasePushLockExclusive(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfReleasePushLockShared(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfTryToWakePushLock(
+    PEX_PUSH_LOCK PushLock
+);
+
+VOID
+FASTCALL
+ExfUnblockPushLock(
+    PEX_PUSH_LOCK PushLock,
+    PVOID CurrentWaitBlock
+);
+
+#endif
+
+//
+// Native Calls
+//
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtAddAtom(
+    IN PWSTR AtomName,
+    IN ULONG AtomNameLength,
+    IN OUT PRTL_ATOM Atom
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCancelTimer(
+    IN HANDLE TimerHandle,
+    OUT PBOOLEAN CurrentState OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtClearEvent(
+    IN HANDLE EventHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN EVENT_TYPE EventType,
+    IN BOOLEAN InitialState
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN InitialOwner
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN LONG InitialCount,
+    IN LONG MaximumCount
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtCreateTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN TIMER_TYPE TimerType
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDeleteAtom(
+    IN RTL_ATOM Atom
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtDisplayString(
+    IN PUNICODE_STRING DisplayString
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtFindAtom(
+    IN  PWSTR AtomName,
+    IN  ULONG AtomNameLength,
+    OUT PRTL_ATOM Atom OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAcces,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtOpenTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtPulseEvent(
+    IN HANDLE EventHandle,
+    IN PLONG PulseCount OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryDefaultLocale(
+    IN BOOLEAN UserProfile,
+    OUT PLCID DefaultLocaleId
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryDefaultUILanguage(
+    PLANGID LanguageId
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryEvent(
+    IN HANDLE EventHandle,
+    IN EVENT_INFORMATION_CLASS EventInformationClass,
+    OUT PVOID EventInformation,
+    IN ULONG EventInformationLength,
+    OUT PULONG ReturnLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryInformationAtom(
+    IN  RTL_ATOM Atom,
+    IN  ATOM_INFORMATION_CLASS AtomInformationClass,
+    OUT PVOID AtomInformation,
+    IN  ULONG AtomInformationLength,
+    OUT PULONG ReturnLength OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryInstallUILanguage(
+    PLANGID LanguageId
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryMutant(
+    IN HANDLE MutantHandle,
+    IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+    OUT PVOID MutantInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQuerySemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+    OUT PVOID SemaphoreInformation,
+    IN ULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQuerySystemEnvironmentValue(
+    IN PUNICODE_STRING Name,
+    OUT PWSTR Value,
+    ULONG Length,
+    PULONG ReturnLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQuerySystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    OUT PVOID SystemInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtQueryTimer(
+    IN HANDLE TimerHandle,
+    IN TIMER_INFORMATION_CLASS TimerInformationClass,
+    OUT PVOID TimerInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtRaiseHardError(
+    IN NTSTATUS ErrorStatus,
+    IN ULONG NumberOfParameters,
+    IN ULONG UnicodeStringParameterMask,
+    IN PULONG_PTR Parameters,
+    IN ULONG ValidResponseOptions,
+    OUT PULONG Response
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtReleaseMutant(
+    IN HANDLE MutantHandle,
+    IN PLONG ReleaseCount OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtReleaseSemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN LONG ReleaseCount,
+    OUT PLONG PreviousCount
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtResetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG NumberOfWaitingThreads OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetDefaultLocale(
+    IN BOOLEAN UserProfile,
+    IN LCID DefaultLocaleId
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetDefaultUILanguage(
+    LANGID LanguageId
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetDefaultHardErrorPort(
+    IN HANDLE PortHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG PreviousState  OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetHighWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetLowEventPair(
+    HANDLE EventPair
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetLowWaitHighEventPair(
+    HANDLE EventPair
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetSystemEnvironmentValue(
+    IN PUNICODE_STRING VariableName,
+    IN PUNICODE_STRING Value
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetSystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    IN PVOID SystemInformation,
+    IN ULONG SystemInformationLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetTimer(
+    IN HANDLE TimerHandle,
+    IN PLARGE_INTEGER DueTime,
+    IN PTIMER_APC_ROUTINE TimerApcRoutine,
+    IN PVOID TimerContext,
+    IN BOOLEAN WakeTimer,
+    IN LONG Period OPTIONAL,
+    OUT PBOOLEAN PreviousState OPTIONAL
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetUuidSeed(
+    IN PUCHAR UuidSeed
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtShutdownSystem(
+    IN SHUTDOWN_ACTION Action
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtWaitHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtTraceEvent(
+    IN ULONG TraceHandle,
+    IN ULONG Flags,
+    IN ULONG TraceHeaderLength,
+    IN PEVENT_TRACE_HEADER TraceHeader
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwAddAtom(
+    IN PWSTR AtomName,
+    IN ULONG AtomNameLength,
+    IN OUT PRTL_ATOM Atom
+);
+
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCancelTimer(
+    IN HANDLE TimerHandle,
+    OUT PBOOLEAN CurrentState OPTIONAL
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwClearEvent(
+    IN HANDLE EventHandle
+);
+
+NTSYSAPI
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN EVENT_TYPE EventType,
+    IN BOOLEAN InitialState
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes,
+    IN BOOLEAN InitialOwner
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN LONG InitialCount,
+    IN LONG MaximumCount
+);
+
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwCreateTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
+    IN TIMER_TYPE TimerType
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDeleteAtom(
+    IN RTL_ATOM Atom
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwDisplayString(
+    IN PUNICODE_STRING DisplayString
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwFindAtom(
+    IN  PWSTR AtomName,
+    IN  ULONG AtomNameLength,
+    OUT PRTL_ATOM Atom OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenEvent(
+    OUT PHANDLE EventHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenEventPair(
+    OUT PHANDLE EventPairHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenMutant(
+    OUT PHANDLE MutantHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenSemaphore(
+    OUT PHANDLE SemaphoreHandle,
+    IN ACCESS_MASK DesiredAcces,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwOpenTimer(
+    OUT PHANDLE TimerHandle,
+    IN ACCESS_MASK DesiredAccess,
+    IN POBJECT_ATTRIBUTES ObjectAttributes
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPulseEvent(
+    IN HANDLE EventHandle,
+    IN PLONG PulseCount OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultLocale(
+    IN BOOLEAN UserProfile,
+    OUT PLCID DefaultLocaleId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryDefaultUILanguage(
+    PLANGID LanguageId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryEvent(
+    IN HANDLE EventHandle,
+    IN EVENT_INFORMATION_CLASS EventInformationClass,
+    OUT PVOID EventInformation,
+    IN ULONG EventInformationLength,
+    OUT PULONG ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInformationAtom(
+    IN  RTL_ATOM Atom,
+    IN  ATOM_INFORMATION_CLASS AtomInformationClass,
+    OUT PVOID AtomInformation,
+    IN  ULONG AtomInformationLength,
+    OUT PULONG ReturnLength OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryInstallUILanguage(
+    PLANGID LanguageId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryMutant(
+    IN HANDLE MutantHandle,
+    IN MUTANT_INFORMATION_CLASS MutantInformationClass,
+    OUT PVOID MutantInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
+    OUT PVOID SemaphoreInformation,
+    IN ULONG Length,
+    OUT PULONG ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemEnvironmentValue(
+    IN PUNICODE_STRING Name,
+    OUT PWSTR Value,
+    ULONG Length,
+    PULONG ReturnLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQuerySystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    OUT PVOID SystemInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwQueryTimer(
+    IN HANDLE TimerHandle,
+    IN TIMER_INFORMATION_CLASS TimerInformationClass,
+    OUT PVOID TimerInformation,
+    IN ULONG Length,
+    OUT PULONG ResultLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwRaiseHardError(
+    IN NTSTATUS ErrorStatus,
+    IN ULONG NumberOfParameters,
+    IN ULONG UnicodeStringParameterMask,
+    IN PULONG_PTR Parameters,
+    IN ULONG ValidResponseOptions,
+    OUT PULONG Response
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReleaseMutant(
+    IN HANDLE MutantHandle,
+    IN PLONG ReleaseCount OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwReleaseSemaphore(
+    IN HANDLE SemaphoreHandle,
+    IN LONG ReleaseCount,
+    OUT PLONG PreviousCount
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwResetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG NumberOfWaitingThreads OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultLocale(
+    IN BOOLEAN UserProfile,
+    IN LCID DefaultLocaleId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultUILanguage(
+    LANGID LanguageId
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetDefaultHardErrorPort(
+    IN HANDLE PortHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetEvent(
+    IN HANDLE EventHandle,
+    OUT PLONG PreviousState  OPTIONAL
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetHighWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLowEventPair(
+    HANDLE EventPair
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetLowWaitHighEventPair(
+    HANDLE EventPair
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemEnvironmentValue(
+    IN PUNICODE_STRING VariableName,
+    IN PUNICODE_STRING Value
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemInformation(
+    IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
+    IN PVOID SystemInformation,
+    IN ULONG SystemInformationLength
+);
+
+#ifdef NTOS_MODE_USER
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetTimer(
+    IN HANDLE TimerHandle,
+    IN PLARGE_INTEGER DueTime,
+    IN PTIMER_APC_ROUTINE TimerApcRoutine,
+    IN PVOID TimerContext,
+    IN BOOLEAN WakeTimer,
+    IN LONG Period OPTIONAL,
+    OUT PBOOLEAN PreviousState OPTIONAL
+);
+#endif
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetUuidSeed(
+    IN PUCHAR UuidSeed
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwShutdownSystem(
+    IN SHUTDOWN_ACTION Action
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitHighEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwWaitLowEventPair(
+    IN HANDLE EventPairHandle
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwTraceEvent(
+    IN ULONG TraceHandle,
+    IN ULONG Flags,
+    IN ULONG TraceHeaderLength,
+    IN PEVENT_TRACE_HEADER TraceHeader
+);
+#endif
index 642c75e..3f5c0b8 100644 (file)
@@ -1,88 +1,88 @@
-List of ReactOS Applications compiling with the NDK\r
-(verify, fix, and optimize their usage)\r
---------------------------------------------------------------\r
-\r
-apps\utils\ps\ps.c: #include <ndk/ntndk.h>\r
-drivers\dd\blue\blue.c: #include <ndk/halfuncs.h>\r
-drivers\dd\bootvid\bootvid.c: #include <ndk/ldrfuncs.h>\r
-drivers\storage\diskdump\diskdump.c: #include <ndk/extypes.h>\r
-drivers\storage\diskdump\diskdump.c: #include <ndk/rtlfuncs.h>\r
-hal\hal\hal.c: #include <ndk/halfuncs.h>\r
-hal\hal\hal.c: #include <ndk/kdfuncs.h>\r
-lib\crt\except\unwind.c: #include <ndk/umtypes.h>\r
-lib\crt\except\unwind.c: #include <ndk/extypes.h>\r
-lib\crt\except\unwind.c: #include <ndk/rtlfuncs.h>\r
-lib\dnsapi\dnsapi\stubs.c: #include <ndk/ntndk.h>\r
-lib\epsapi\enum\drivers.c: #include <ndk/ntndk.h>\r
-lib\epsapi\enum\modules.c: #include <ndk/ntndk.h>\r
-lib\epsapi\enum\processes.c: #include <ndk/ntndk.h>\r
-lib\lsasrv\lsaport.c: #include <ndk/ntndk.h>\r
-lib\lsasrv\lsasrv.c: #include <ndk/ntndk.h>\r
-lib\nt\entry_point.c: #include <ndk/ntndk.h>\r
-lib\samlib\samlib.c: #include <ndk/ntndk.h>\r
-lib\samsrv\samsrv.c: #include <ndk/ntndk.h>\r
-lib\smdll\query.c: #include <ndk/ntndk.h>\r
-lib\string\mbstowcs.c: #include <ndk/umtypes.h>\r
-lib\string\mbstowcs.c: #include <ndk/rtlfuncs.h>\r
-lib\string\sscanf.c: #include <ndk/umtypes.h>\r
-lib\string\sscanf.c: #include <ndk/rtlfuncs.h>\r
-lib\string\wcstombs.c: #include <ndk/umtypes.h>\r
-lib\string\wcstombs.c: #include <ndk/rtlfuncs.h>\r
-lib\syssetup\install.c: #include <ndk/ntndk.h>\r
-lib\syssetup\logfile.c: #include <ndk/ntndk.h>\r
-lib\wdmguid\wdmguid.c: #include <ndk/sysguid.h>\r
-regtests\shared\regtests.c: #include <ndk/ntndk.h>\r
-services\umpnpmgr\umpnpmgr.c: #include <ndk/ntndk.h>\r
-subsys\ntvdm\ntvdm.c: #include <ndk/ntndk.h>\r
-subsys\system\autochk\autochk.c: #include <ndk/ntndk.h>\r
-subsys\system\lsass\lsass.c: #include <ndk/ntndk.h>\r
-subsys\system\setup\setup.c: #include <ndk/ntndk.h>\r
-subsys\system\sm\sm.c: #include <ndk/ntndk.h>\r
-boot\freeldr\freeldr\include\freeldr.h: #include <ndk/ntndk.h>\r
-drivers\fs\ms\msfs.h: #include <ndk/ntndk.h>\r
-drivers\fs\np\npfs.h: #include <ndk/iotypes.h>\r
-drivers\fs\vfat\vfat.h: #include <ndk/ntndk.h>\r
-drivers\net\ndis\include\ndissys.h: #include <ndk/ntndk.h>\r
-drivers\net\tcpip\include\precomp.h: #include <ndk/ntndk.h>\r
-drivers\video\miniport\xboxvmp\xboxvmp.h: #include <ndk/ntndk.h>\r
-drivers\video\videoprt\videoprt.h: #include <ndk/ntndk.h>\r
-hal\halx86\include\hal.h: #include <ndk/ntndk.h>\r
-include\drivers\diskdump\diskdump.h: #include <ndk/ntndk.h>\r
-lib\advapi32\advapi32.h: #include <ndk/ntndk.h>\r
-lib\crt\precomp.h: #include <ndk/ntndk.h>\r
-lib\dbghelp\stackframe.h: #include <ndk/umtypes.h>\r
-lib\dbghelp\stackframe.h: #include <ndk/extypes.h>\r
-lib\dbghelp\stackframe.h: #include <ndk/rtlfuncs.h>\r
-lib\dnsapi\dnsapi\precomp.h: #include <ndk/ntndk.h>\r
-lib\fmifs\precomp.h: #include <ndk/ntndk.h>\r
-lib\fslib\vfatlib\vfatlib.h: #include <ndk/ntndk.h>\r
-lib\fslib\vfatxlib\vfatxlib.h: #include <ndk/ntndk.h>\r
-lib\gdi32\include\precomp.h: #include <ndk/ntndk.h>\r
-lib\imagehlp\precomp.h: #include <ndk/umtypes.h>\r
-lib\imagehlp\precomp.h: #include <ndk/rtlfuncs.h>\r
-lib\iphlpapi\iphlpapi_private.h: #include <ndk/ntndk.h>\r
-lib\kernel32\k32.h: #include <ndk/ntndk.h>\r
-lib\msafd\msafd.h: #include <ndk/ntndk.h>\r
-lib\ntdll\inc\ntdll.h: #include <ndk/ntndk.h>\r
-lib\opengl32\teb.h: #include <ndk/ntndk.h>\r
-lib\psapi\precomp.h: #include <ndk/ntndk.h>\r
-lib\rtl\rtl.h: #include <ndk/ntndk.h>\r
-lib\secur32\precomp.h: #include <ndk/ntndk.h>\r
-lib\setupapi\setupapi_private.h: #include <ndk/ntndk.h>\r
-lib\smlib\precomp.h: #include <ndk/ntndk.h>\r
-lib\user32\include\user32.h: #include <ndk/ntndk.h>\r
-lib\userenv\precomp.h: #include <ndk/ntndk.h>\r
-lib\wshirda\wshirda.h: #include <ndk/ntndk.h>\r
-ntoskrnl\include\ntoskrnl.h: #include <ndk/ntndk.h>\r
-ntoskrnl\include\internal\napi.h: #include <ndk/asm.h>\r
-services\dhcp\include\rosdhcp.h: #include <ndk/ntndk.h>\r
-services\eventlog\eventlog.h: #include <ndk/ntndk.h>\r
-services\rpcss\rpcss.h: #include <ndk/ntndk.h>\r
-subsys\csrss\csrss.h: #include <ndk/ntndk.h>\r
-subsys\csrss\include\api.h: #include <ndk/ntndk.h>\r
-subsys\csrss\win32csr\w32csr.h: #include <ndk/ntndk.h>\r
-subsys\smss\smss.h: #include <ndk/ntndk.h>\r
-subsys\system\cmd\precomp.h: #include <ndk/ntndk.h>\r
-subsys\system\services\services.h: #include <ndk/ntndk.h>\r
-subsys\system\taskmgr\precomp.h: #include <ndk/ntndk.h>\r
-subsys\system\usetup\usetup.h: #include <ndk/ntndk.h>\r
+List of ReactOS Applications compiling with the NDK
+(verify, fix, and optimize their usage)
+--------------------------------------------------------------
+
+apps\utils\ps\ps.c: #include <ndk/ntndk.h>
+drivers\dd\blue\blue.c: #include <ndk/halfuncs.h>
+drivers\dd\bootvid\bootvid.c: #include <ndk/ldrfuncs.h>
+drivers\storage\diskdump\diskdump.c: #include <ndk/extypes.h>
+drivers\storage\diskdump\diskdump.c: #include <ndk/rtlfuncs.h>
+hal\hal\hal.c: #include <ndk/halfuncs.h>
+hal\hal\hal.c: #include <ndk/kdfuncs.h>
+lib\crt\except\unwind.c: #include <ndk/umtypes.h>
+lib\crt\except\unwind.c: #include <ndk/extypes.h>
+lib\crt\except\unwind.c: #include <ndk/rtlfuncs.h>
+lib\dnsapi\dnsapi\stubs.c: #include <ndk/ntndk.h>
+lib\epsapi\enum\drivers.c: #include <ndk/ntndk.h>
+lib\epsapi\enum\modules.c: #include <ndk/ntndk.h>
+lib\epsapi\enum\processes.c: #include <ndk/ntndk.h>
+lib\lsasrv\lsaport.c: #include <ndk/ntndk.h>
+lib\lsasrv\lsasrv.c: #include <ndk/ntndk.h>
+lib\nt\entry_point.c: #include <ndk/ntndk.h>
+lib\samlib\samlib.c: #include <ndk/ntndk.h>
+lib\samsrv\samsrv.c: #include <ndk/ntndk.h>
+lib\smdll\query.c: #include <ndk/ntndk.h>
+lib\string\mbstowcs.c: #include <ndk/umtypes.h>
+lib\string\mbstowcs.c: #include <ndk/rtlfuncs.h>
+lib\string\sscanf.c: #include <ndk/umtypes.h>
+lib\string\sscanf.c: #include <ndk/rtlfuncs.h>
+lib\string\wcstombs.c: #include <ndk/umtypes.h>
+lib\string\wcstombs.c: #include <ndk/rtlfuncs.h>
+lib\syssetup\install.c: #include <ndk/ntndk.h>
+lib\syssetup\logfile.c: #include <ndk/ntndk.h>
+lib\wdmguid\wdmguid.c: #include <ndk/sysguid.h>
+regtests\shared\regtests.c: #include <ndk/ntndk.h>
+services\umpnpmgr\umpnpmgr.c: #include <ndk/ntndk.h>
+subsys\ntvdm\ntvdm.c: #include <ndk/ntndk.h>
+subsys\system\autochk\autochk.c: #include <ndk/ntndk.h>
+subsys\system\lsass\lsass.c: #include <ndk/ntndk.h>
+subsys\system\setup\setup.c: #include <ndk/ntndk.h>
+subsys\system\sm\sm.c: #include <ndk/ntndk.h>
+boot\freeldr\freeldr\include\freeldr.h: #include <ndk/ntndk.h>
+drivers\fs\ms\msfs.h: #include <ndk/ntndk.h>
+drivers\fs\np\npfs.h: #include <ndk/iotypes.h>
+drivers\fs\vfat\vfat.h: #include <ndk/ntndk.h>
+drivers\net\ndis\include\ndissys.h: #include <ndk/ntndk.h>
+drivers\net\tcpip\include\precomp.h: #include <ndk/ntndk.h>
+drivers\video\miniport\xboxvmp\xboxvmp.h: #include <ndk/ntndk.h>
+drivers\video\videoprt\videoprt.h: #include <ndk/ntndk.h>
+hal\halx86\include\hal.h: #include <ndk/ntndk.h>
+include\drivers\diskdump\diskdump.h: #include <ndk/ntndk.h>
+lib\advapi32\advapi32.h: #include <ndk/ntndk.h>
+lib\crt\precomp.h: #include <ndk/ntndk.h>
+lib\dbghelp\stackframe.h: #include <ndk/umtypes.h>
+lib\dbghelp\stackframe.h: #include <ndk/extypes.h>
+lib\dbghelp\stackframe.h: #include <ndk/rtlfuncs.h>
+lib\dnsapi\dnsapi\precomp.h: #include <ndk/ntndk.h>
+lib\fmifs\precomp.h: #include <ndk/ntndk.h>
+lib\fslib\vfatlib\vfatlib.h: #include <ndk/ntndk.h>
+lib\fslib\vfatxlib\vfatxlib.h: #include <ndk/ntndk.h>
+lib\gdi32\include\precomp.h: #include <ndk/ntndk.h>
+lib\imagehlp\precomp.h: #include <ndk/umtypes.h>
+lib\imagehlp\precomp.h: #include <ndk/rtlfuncs.h>
+lib\iphlpapi\iphlpapi_private.h: #include <ndk/ntndk.h>
+lib\kernel32\k32.h: #include <ndk/ntndk.h>
+lib\msafd\msafd.h: #include <ndk/ntndk.h>
+lib\ntdll\inc\ntdll.h: #include <ndk/ntndk.h>
+lib\opengl32\teb.h: #include <ndk/ntndk.h>
+lib\psapi\precomp.h: #include <ndk/ntndk.h>
+lib\rtl\rtl.h: #include <ndk/ntndk.h>
+lib\secur32\precomp.h: #include <ndk/ntndk.h>
+lib\setupapi\setupapi_private.h: #include <ndk/ntndk.h>
+lib\smlib\precomp.h: #include <ndk/ntndk.h>
+lib\user32\include\user32.h: #include <ndk/ntndk.h>
+lib\userenv\precomp.h: #include <ndk/ntndk.h>
+lib\wshirda\wshirda.h: #include <ndk/ntndk.h>
+ntoskrnl\include\ntoskrnl.h: #include <ndk/ntndk.h>
+ntoskrnl\include\internal\napi.h: #include <ndk/asm.h>
+services\dhcp\include\rosdhcp.h: #include <ndk/ntndk.h>
+services\eventlog\eventlog.h: #include <ndk/ntndk.h>
+services\rpcss\rpcss.h: #include <ndk/ntndk.h>
+subsys\csrss\csrss.h: #include <ndk/ntndk.h>
+subsys\csrss\include\api.h: #include <ndk/ntndk.h>
+subsys\csrss\win32csr\w32csr.h: #include <ndk/ntndk.h>
+subsys\smss\smss.h: #include <ndk/ntndk.h>
+subsys\system\cmd\precomp.h: #include <ndk/ntndk.h>
+subsys\system\services\services.h: #include <ndk/ntndk.h>
+subsys\system\taskmgr\precomp.h: #include <ndk/ntndk.h>
+subsys\system\usetup\usetup.h: #include <ndk/ntndk.h>
index fdc43db..3b4f910 100644 (file)
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    ifssupp.h\r
-\r
-Abstract:\r
-\r
-    NDK Support for usage without the IFS. Will be deprecated at WDK Release.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-#ifndef _NTIFS_\r
-#ifndef NTOS_MODE_USER\r
-#define _NTIFS_\r
-\r
-#define TOKEN_SOURCE_LENGTH               8\r
-\r
-typedef enum _TOKEN_TYPE\r
-{\r
-    TokenPrimary = 1,\r
-    TokenImpersonation\r
-} TOKEN_TYPE, *PTOKEN_TYPE;\r
-\r
-typedef PVOID PRTL_HEAP_PARAMETERS;\r
-typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;\r
-\r
-typedef struct _RTL_SPLAY_LINKS\r
-{\r
-    struct _RTL_SPLAY_LINKS *Parent;\r
-    struct _RTL_SPLAY_LINKS *LeftChild;\r
-    struct _RTL_SPLAY_LINKS *RightChild;\r
-} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;\r
-\r
-#if defined(USE_LPC6432)\r
-#define LPC_CLIENT_ID CLIENT_ID64\r
-#define LPC_SIZE_T ULONGLONG\r
-#define LPC_PVOID ULONGLONG\r
-#define LPC_HANDLE ULONGLONG\r
-#else\r
-#define LPC_CLIENT_ID CLIENT_ID\r
-#define LPC_SIZE_T SIZE_T\r
-#define LPC_PVOID PVOID\r
-#define LPC_HANDLE HANDLE\r
-#endif\r
-\r
-typedef struct _PORT_MESSAGE\r
-{\r
-    union\r
-    {\r
-        struct\r
-        {\r
-            CSHORT DataLength;\r
-            CSHORT TotalLength;\r
-        } s1;\r
-        ULONG Length;\r
-    } u1;\r
-    union\r
-    {\r
-        struct\r
-        {\r
-            CSHORT Type;\r
-            CSHORT DataInfoOffset;\r
-        } s2;\r
-        ULONG ZeroInit;\r
-    } u2;\r
-    union\r
-    {\r
-        LPC_CLIENT_ID ClientId;\r
-        double DoNotUseThisField;\r
-    };\r
-    ULONG MessageId;\r
-    union\r
-    {\r
-        LPC_SIZE_T ClientViewSize;\r
-        ULONG CallbackId;\r
-    };\r
-} PORT_MESSAGE, *PPORT_MESSAGE;\r
-\r
-typedef struct _PORT_VIEW\r
-{\r
-    ULONG Length;\r
-    LPC_HANDLE SectionHandle;\r
-    ULONG SectionOffset;\r
-    LPC_SIZE_T ViewSize;\r
-    LPC_PVOID ViewBase;\r
-    LPC_PVOID ViewRemoteBase;\r
-} PORT_VIEW, *PPORT_VIEW;\r
-\r
-typedef struct _REMOTE_PORT_VIEW\r
-{\r
-    ULONG Length;\r
-    LPC_SIZE_T ViewSize;\r
-    LPC_PVOID ViewBase;\r
-} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;\r
-\r
-typedef struct _KAPC_STATE\r
-{\r
-    LIST_ENTRY ApcListHead[2];\r
-    struct _KPROCESS *Process;\r
-    BOOLEAN KernelApcInProgress;\r
-    BOOLEAN KernelApcPending;\r
-    BOOLEAN UserApcPending;\r
-} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;\r
-\r
-typedef struct _KQUEUE\r
-{\r
-    DISPATCHER_HEADER Header;\r
-    LIST_ENTRY EntryListHead;\r
-    ULONG CurrentCount;\r
-    ULONG MaximumCount;\r
-    LIST_ENTRY ThreadListHead;\r
-} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;\r
-\r
-typedef struct _ACE_HEADER\r
-{\r
-    UCHAR AceType;\r
-    UCHAR AceFlags;\r
-    USHORT AceSize;\r
-} ACE_HEADER, *PACE_HEADER;\r
-\r
-typedef enum _RTL_GENERIC_COMPARE_RESULTS\r
-{\r
-    GenericLessThan,\r
-    GenericGreaterThan,\r
-    GenericEqual\r
-} RTL_GENERIC_COMPARE_RESULTS;\r
-\r
-typedef struct _SID_IDENTIFIER_AUTHORITY\r
-{\r
-    UCHAR Value[6];\r
-} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;\r
-\r
-typedef struct _SID_AND_ATTRIBUTES\r
-{\r
-    PSID Sid;\r
-    ULONG Attributes;\r
-} SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;\r
-\r
-typedef struct _TOKEN_SOURCE\r
-{\r
-    CHAR SourceName[TOKEN_SOURCE_LENGTH];\r
-    LUID SourceIdentifier;\r
-} TOKEN_SOURCE, *PTOKEN_SOURCE;\r
-\r
-typedef struct _TOKEN_CONTROL\r
-{\r
-    LUID TokenId;\r
-    LUID AuthenticationId;\r
-    LUID ModifiedId;\r
-    TOKEN_SOURCE TokenSource;\r
-} TOKEN_CONTROL, *PTOKEN_CONTROL;\r
-\r
-typedef struct _SECURITY_CLIENT_CONTEXT\r
-{\r
-    SECURITY_QUALITY_OF_SERVICE SecurityQos;\r
-    PACCESS_TOKEN ClientToken;\r
-    BOOLEAN DirectlyAccessClientToken;\r
-    BOOLEAN DirectAccessEffectiveOnly;\r
-    BOOLEAN ServerIsRemote;\r
-    TOKEN_CONTROL ClientTokenControl;\r
-} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;\r
-\r
-typedef struct _SECURITY_DESCRIPTOR_RELATIVE\r
-{\r
-    UCHAR Revision;\r
-    UCHAR Sbz1;\r
-    SECURITY_DESCRIPTOR_CONTROL Control;\r
-    ULONG Owner;\r
-    ULONG Group;\r
-    ULONG Sacl;\r
-    ULONG Dacl;\r
-} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;\r
-\r
-typedef struct _TOKEN_GROUPS\r
-{\r
-    ULONG GroupCount;\r
-    SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];\r
-} TOKEN_GROUPS, *PTOKEN_GROUPS;\r
-\r
-typedef struct _TOKEN_PRIVILEGES\r
-{\r
-    ULONG PrivilegeCount;\r
-    LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];\r
-} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;\r
-\r
-typedef struct _TOKEN_USER\r
-{\r
-    SID_AND_ATTRIBUTES User;\r
-} TOKEN_USER, *PTOKEN_USER;\r
-\r
-typedef enum _TOKEN_INFORMATION_CLASS\r
-{\r
-    TokenUser = 1,\r
-    TokenGroups,\r
-    TokenPrivileges,\r
-    TokenOwner,\r
-    TokenPrimaryGroup,\r
-    TokenDefaultDacl,\r
-    TokenSource,\r
-    TokenType,\r
-    TokenImpersonationLevel,\r
-    TokenStatistics,\r
-    TokenRestrictedSids,\r
-    TokenSessionId,\r
-    TokenGroupsAndPrivileges,\r
-    TokenSessionReference,\r
-    TokenSandBoxInert,\r
-    TokenAuditPolicy,\r
-    TokenOrigin,\r
-    TokenElevationType,\r
-    TokenLinkedToken,\r
-    TokenElevation,\r
-    TokenIsRestricted,\r
-    TokenAccessInformation,\r
-    TokenVirtualization,\r
-    TokenIntegrityLevel,\r
-    TokenIntegrityLevelDesktop,\r
-    TokenMandatoryPolicy,\r
-    MaxTokenInfoClass\r
-} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;\r
-\r
-typedef struct _TOKEN_OWNER\r
-{\r
-    PSID Owner;\r
-} TOKEN_OWNER, *PTOKEN_OWNER;\r
-\r
-typedef struct _TOKEN_PRIMARY_GROUP\r
-{\r
-    PSID PrimaryGroup;\r
-} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;\r
-\r
-typedef struct _TOKEN_DEFAULT_DACL\r
-{\r
-    PACL DefaultDacl;\r
-} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;\r
-\r
-#endif // !NTOS_MODE_USER\r
-#endif // _NTIFS_\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    ifssupp.h
+
+Abstract:
+
+    NDK Support for usage without the IFS. Will be deprecated at WDK Release.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+#ifndef _NTIFS_
+#ifndef NTOS_MODE_USER
+#define _NTIFS_
+
+#define TOKEN_SOURCE_LENGTH               8
+
+typedef enum _TOKEN_TYPE
+{
+    TokenPrimary = 1,
+    TokenImpersonation
+} TOKEN_TYPE, *PTOKEN_TYPE;
+
+typedef PVOID PRTL_HEAP_PARAMETERS;
+typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+
+typedef struct _RTL_SPLAY_LINKS
+{
+    struct _RTL_SPLAY_LINKS *Parent;
+    struct _RTL_SPLAY_LINKS *LeftChild;
+    struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
+
+#if defined(USE_LPC6432)
+#define LPC_CLIENT_ID CLIENT_ID64
+#define LPC_SIZE_T ULONGLONG
+#define LPC_PVOID ULONGLONG
+#define LPC_HANDLE ULONGLONG
+#else
+#define LPC_CLIENT_ID CLIENT_ID
+#define LPC_SIZE_T SIZE_T
+#define LPC_PVOID PVOID
+#define LPC_HANDLE HANDLE
+#endif
+
+typedef struct _PORT_MESSAGE
+{
+    union
+    {
+        struct
+        {
+            CSHORT DataLength;
+            CSHORT TotalLength;
+        } s1;
+        ULONG Length;
+    } u1;
+    union
+    {
+        struct
+        {
+            CSHORT Type;
+            CSHORT DataInfoOffset;
+        } s2;
+        ULONG ZeroInit;
+    } u2;
+    union
+    {
+        LPC_CLIENT_ID ClientId;
+        double DoNotUseThisField;
+    };
+    ULONG MessageId;
+    union
+    {
+        LPC_SIZE_T ClientViewSize;
+        ULONG CallbackId;
+    };
+} PORT_MESSAGE, *PPORT_MESSAGE;
+
+typedef struct _PORT_VIEW
+{
+    ULONG Length;
+    LPC_HANDLE SectionHandle;
+    ULONG SectionOffset;
+    LPC_SIZE_T ViewSize;
+    LPC_PVOID ViewBase;
+    LPC_PVOID ViewRemoteBase;
+} PORT_VIEW, *PPORT_VIEW;
+
+typedef struct _REMOTE_PORT_VIEW
+{
+    ULONG Length;
+    LPC_SIZE_T ViewSize;
+    LPC_PVOID ViewBase;
+} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
+
+typedef struct _KAPC_STATE
+{
+    LIST_ENTRY ApcListHead[2];
+    struct _KPROCESS *Process;
+    BOOLEAN KernelApcInProgress;
+    BOOLEAN KernelApcPending;
+    BOOLEAN UserApcPending;
+} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
+
+typedef struct _KQUEUE
+{
+    DISPATCHER_HEADER Header;
+    LIST_ENTRY EntryListHead;
+    ULONG CurrentCount;
+    ULONG MaximumCount;
+    LIST_ENTRY ThreadListHead;
+} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
+
+typedef struct _ACE_HEADER
+{
+    UCHAR AceType;
+    UCHAR AceFlags;
+    USHORT AceSize;
+} ACE_HEADER, *PACE_HEADER;
+
+typedef enum _RTL_GENERIC_COMPARE_RESULTS
+{
+    GenericLessThan,
+    GenericGreaterThan,
+    GenericEqual
+} RTL_GENERIC_COMPARE_RESULTS;
+
+typedef struct _SID_IDENTIFIER_AUTHORITY
+{
+    UCHAR Value[6];
+} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
+
+typedef struct _SID_AND_ATTRIBUTES
+{
+    PSID Sid;
+    ULONG Attributes;
+} SID_AND_ATTRIBUTES, * PSID_AND_ATTRIBUTES;
+
+typedef struct _TOKEN_SOURCE
+{
+    CHAR SourceName[TOKEN_SOURCE_LENGTH];
+    LUID SourceIdentifier;
+} TOKEN_SOURCE, *PTOKEN_SOURCE;
+
+typedef struct _TOKEN_CONTROL
+{
+    LUID TokenId;
+    LUID AuthenticationId;
+    LUID ModifiedId;
+    TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL, *PTOKEN_CONTROL;
+
+typedef struct _SECURITY_CLIENT_CONTEXT
+{
+    SECURITY_QUALITY_OF_SERVICE SecurityQos;
+    PACCESS_TOKEN ClientToken;
+    BOOLEAN DirectlyAccessClientToken;
+    BOOLEAN DirectAccessEffectiveOnly;
+    BOOLEAN ServerIsRemote;
+    TOKEN_CONTROL ClientTokenControl;
+} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
+
+typedef struct _SECURITY_DESCRIPTOR_RELATIVE
+{
+    UCHAR Revision;
+    UCHAR Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    ULONG Owner;
+    ULONG Group;
+    ULONG Sacl;
+    ULONG Dacl;
+} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
+
+typedef struct _TOKEN_GROUPS
+{
+    ULONG GroupCount;
+    SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS, *PTOKEN_GROUPS;
+
+typedef struct _TOKEN_PRIVILEGES
+{
+    ULONG PrivilegeCount;
+    LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
+
+typedef struct _TOKEN_USER
+{
+    SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+
+typedef enum _TOKEN_INFORMATION_CLASS
+{
+    TokenUser = 1,
+    TokenGroups,
+    TokenPrivileges,
+    TokenOwner,
+    TokenPrimaryGroup,
+    TokenDefaultDacl,
+    TokenSource,
+    TokenType,
+    TokenImpersonationLevel,
+    TokenStatistics,
+    TokenRestrictedSids,
+    TokenSessionId,
+    TokenGroupsAndPrivileges,
+    TokenSessionReference,
+    TokenSandBoxInert,
+    TokenAuditPolicy,
+    TokenOrigin,
+    TokenElevationType,
+    TokenLinkedToken,
+    TokenElevation,
+    TokenIsRestricted,
+    TokenAccessInformation,
+    TokenVirtualization,
+    TokenIntegrityLevel,
+    TokenIntegrityLevelDesktop,
+    TokenMandatoryPolicy,
+    MaxTokenInfoClass
+} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
+
+typedef struct _TOKEN_OWNER
+{
+    PSID Owner;
+} TOKEN_OWNER, *PTOKEN_OWNER;
+
+typedef struct _TOKEN_PRIMARY_GROUP
+{
+    PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
+
+typedef struct _TOKEN_DEFAULT_DACL
+{
+    PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
+
+#endif // !NTOS_MODE_USER
+#endif // _NTIFS_
index 8e58f6e..d1a6373 100644 (file)
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    lpcfuncs.h\r
-\r
-Abstract:\r
-\r
-    Function definitions for the Executive.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _LPCFUNCS_H\r
-#define _LPCFUNCS_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-\r
-//\r
-// Native calls\r
-//\r
-NTSTATUS\r
-NTAPI\r
-NtAcceptConnectPort(\r
-    PHANDLE PortHandle,\r
-    PVOID PortContext OPTIONAL,\r
-    PPORT_MESSAGE ConnectionRequest,\r
-    BOOLEAN AcceptConnection,\r
-    PPORT_VIEW ServerView OPTIONAL,\r
-    PREMOTE_PORT_VIEW ClientView OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtCompleteConnectPort(\r
-    HANDLE PortHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtConnectPort(\r
-    PHANDLE PortHandle,\r
-    PUNICODE_STRING PortName,\r
-    PSECURITY_QUALITY_OF_SERVICE SecurityQos,\r
-    PPORT_VIEW ClientView OPTIONAL,\r
-    PREMOTE_PORT_VIEW ServerView OPTIONAL,\r
-    PULONG MaxMessageLength OPTIONAL,\r
-    PVOID ConnectionInformation OPTIONAL,\r
-    PULONG ConnectionInformationLength OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtCreatePort(\r
-    PHANDLE PortHandle,\r
-    POBJECT_ATTRIBUTES ObjectAttributes,\r
-    ULONG MaxConnectionInfoLength,\r
-    ULONG MaxMessageLength,\r
-    ULONG MaxPoolUsage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtCreateWaitablePort(\r
-    PHANDLE PortHandle,\r
-    POBJECT_ATTRIBUTES ObjectAttributes,\r
-    ULONG MaxConnectInfoLength,\r
-    ULONG MaxDataLength,\r
-    ULONG NPMessageQueueSize OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtImpersonateClientOfPort(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE ClientMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtListenPort(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE ConnectionRequest\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtQueryInformationPort(\r
-    HANDLE PortHandle,\r
-    PORT_INFORMATION_CLASS PortInformationClass,\r
-    PVOID PortInformation,\r
-    ULONG PortInformationLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReadRequestData(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE Message,\r
-    ULONG Index,\r
-    PVOID Buffer,\r
-    ULONG BufferLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReplyPort(\r
-    IN HANDLE PortHandle,\r
-    IN PPORT_MESSAGE LpcReply\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReplyWaitReceivePort(\r
-    IN HANDLE PortHandle,\r
-    OUT PVOID *PortContext OPTIONAL,\r
-    IN PPORT_MESSAGE ReplyMessage OPTIONAL,\r
-    OUT PPORT_MESSAGE ReceiveMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReplyWaitReceivePortEx(\r
-    IN HANDLE PortHandle,\r
-    OUT PVOID *PortContext OPTIONAL,\r
-    IN PPORT_MESSAGE ReplyMessage OPTIONAL,\r
-    OUT PPORT_MESSAGE ReceiveMessage,\r
-    IN PLARGE_INTEGER Timeout OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReplyWaitReplyPort(\r
-    IN HANDLE PortHandle,\r
-    OUT PPORT_MESSAGE ReplyMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtRequestPort(\r
-    IN HANDLE PortHandle,\r
-    IN PPORT_MESSAGE LpcMessage\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtRequestWaitReplyPort(\r
-    IN HANDLE PortHandle,\r
-    OUT PPORT_MESSAGE LpcReply,\r
-    IN PPORT_MESSAGE LpcRequest\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSecureConnectPort(\r
-    PHANDLE PortHandle,\r
-    PUNICODE_STRING PortName,\r
-    PSECURITY_QUALITY_OF_SERVICE SecurityQos,\r
-    PPORT_VIEW ClientView OPTIONAL,\r
-    PSID Sid OPTIONAL,\r
-    PREMOTE_PORT_VIEW ServerView OPTIONAL,\r
-    PULONG MaxMessageLength OPTIONAL,\r
-    PVOID ConnectionInformation OPTIONAL,\r
-    PULONG ConnectionInformationLength OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtWriteRequestData(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE Message,\r
-    ULONG Index,\r
-    PVOID Buffer,\r
-    ULONG BufferLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwAcceptConnectPort(\r
-    PHANDLE PortHandle,\r
-    PVOID PortContext OPTIONAL,\r
-    PPORT_MESSAGE ConnectionRequest,\r
-    BOOLEAN AcceptConnection,\r
-    PPORT_VIEW ServerView OPTIONAL,\r
-    PREMOTE_PORT_VIEW ClientView OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwCompleteConnectPort(\r
-    HANDLE PortHandle\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwConnectPort(\r
-    PHANDLE PortHandle,\r
-    PUNICODE_STRING PortName,\r
-    PSECURITY_QUALITY_OF_SERVICE SecurityQos,\r
-    PPORT_VIEW ClientView OPTIONAL,\r
-    PREMOTE_PORT_VIEW ServerView OPTIONAL,\r
-    PULONG MaxMessageLength OPTIONAL,\r
-    PVOID ConnectionInformation OPTIONAL,\r
-    PULONG ConnectionInformationLength OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwCreatePort(\r
-    PHANDLE PortHandle,\r
-    POBJECT_ATTRIBUTES ObjectAttributes,\r
-    ULONG MaxConnectionInfoLength,\r
-    ULONG MaxMessageLength,\r
-    ULONG MaxPoolUsage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwCreateWaitablePort(\r
-    PHANDLE PortHandle,\r
-    POBJECT_ATTRIBUTES ObjectAttributes,\r
-    ULONG MaxConnectInfoLength,\r
-    ULONG MaxDataLength,\r
-    ULONG NPMessageQueueSize OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwImpersonateClientOfPort(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE ClientMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwListenPort(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE ConnectionRequest\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryInformationPort(\r
-    HANDLE PortHandle,\r
-    PORT_INFORMATION_CLASS PortInformationClass,\r
-    PVOID PortInformation,\r
-    ULONG PortInformationLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReadRequestData(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE Message,\r
-    ULONG Index,\r
-    PVOID Buffer,\r
-    ULONG BufferLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReplyPort(\r
-    IN HANDLE PortHandle,\r
-    IN PPORT_MESSAGE LpcReply\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReplyWaitReceivePort(\r
-    IN HANDLE PortHandle,\r
-    OUT PVOID *PortContext OPTIONAL,\r
-    IN PPORT_MESSAGE ReplyMessage OPTIONAL,\r
-    OUT PPORT_MESSAGE ReceiveMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReplyWaitReceivePortEx(\r
-    IN HANDLE PortHandle,\r
-    OUT PVOID *PortContext OPTIONAL,\r
-    IN PPORT_MESSAGE ReplyMessage OPTIONAL,\r
-    OUT PPORT_MESSAGE ReceiveMessage,\r
-    IN PLARGE_INTEGER Timeout OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReplyWaitReplyPort(\r
-    IN HANDLE PortHandle,\r
-    OUT PPORT_MESSAGE ReplyMessage\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwRequestPort(\r
-    IN HANDLE PortHandle,\r
-    IN PPORT_MESSAGE LpcMessage\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwRequestWaitReplyPort(\r
-    IN HANDLE PortHandle,\r
-    OUT PPORT_MESSAGE LpcReply,\r
-    IN PPORT_MESSAGE LpcRequest\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSecureConnectPort(\r
-    PHANDLE PortHandle,\r
-    PUNICODE_STRING PortName,\r
-    PSECURITY_QUALITY_OF_SERVICE SecurityQos,\r
-    PPORT_VIEW ClientView OPTIONAL,\r
-    PSID Sid OPTIONAL,\r
-    PREMOTE_PORT_VIEW ServerView OPTIONAL,\r
-    PULONG MaxMessageLength OPTIONAL,\r
-    PVOID ConnectionInformation OPTIONAL,\r
-    PULONG ConnectionInformationLength OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwWriteRequestData(\r
-    HANDLE PortHandle,\r
-    PPORT_MESSAGE Message,\r
-    ULONG Index,\r
-    PVOID Buffer,\r
-    ULONG BufferLength,\r
-    PULONG ReturnLength\r
-);\r
-\r
-#endif\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    lpcfuncs.h
+
+Abstract:
+
+    Function definitions for the Executive.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _LPCFUNCS_H
+#define _LPCFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+
+//
+// Native calls
+//
+NTSTATUS
+NTAPI
+NtAcceptConnectPort(
+    PHANDLE PortHandle,
+    PVOID PortContext OPTIONAL,
+    PPORT_MESSAGE ConnectionRequest,
+    BOOLEAN AcceptConnection,
+    PPORT_VIEW ServerView OPTIONAL,
+    PREMOTE_PORT_VIEW ClientView OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+NtCompleteConnectPort(
+    HANDLE PortHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PPORT_VIEW ClientView OPTIONAL,
+    PREMOTE_PORT_VIEW ServerView OPTIONAL,
+    PULONG MaxMessageLength OPTIONAL,
+    PVOID ConnectionInformation OPTIONAL,
+    PULONG ConnectionInformationLength OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+NtCreatePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectionInfoLength,
+    ULONG MaxMessageLength,
+    ULONG MaxPoolUsage
+);
+
+NTSTATUS
+NTAPI
+NtCreateWaitablePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+NtImpersonateClientOfPort(
+    HANDLE PortHandle,
+    PPORT_MESSAGE ClientMessage
+);
+
+NTSTATUS
+NTAPI
+NtListenPort(
+    HANDLE PortHandle,
+    PPORT_MESSAGE ConnectionRequest
+);
+
+NTSTATUS
+NTAPI
+NtQueryInformationPort(
+    HANDLE PortHandle,
+    PORT_INFORMATION_CLASS PortInformationClass,
+    PVOID PortInformation,
+    ULONG PortInformationLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+NTAPI
+NtReadRequestData(
+    HANDLE PortHandle,
+    PPORT_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+NTAPI
+NtReplyPort(
+    IN HANDLE PortHandle,
+    IN PPORT_MESSAGE LpcReply
+);
+
+NTSTATUS
+NTAPI
+NtReplyWaitReceivePort(
+    IN HANDLE PortHandle,
+    OUT PVOID *PortContext OPTIONAL,
+    IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+    OUT PPORT_MESSAGE ReceiveMessage
+);
+
+NTSTATUS
+NTAPI
+NtReplyWaitReceivePortEx(
+    IN HANDLE PortHandle,
+    OUT PVOID *PortContext OPTIONAL,
+    IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+    OUT PPORT_MESSAGE ReceiveMessage,
+    IN PLARGE_INTEGER Timeout OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+NtReplyWaitReplyPort(
+    IN HANDLE PortHandle,
+    OUT PPORT_MESSAGE ReplyMessage
+);
+
+NTSTATUS
+NTAPI
+NtRequestPort(
+    IN HANDLE PortHandle,
+    IN PPORT_MESSAGE LpcMessage
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtRequestWaitReplyPort(
+    IN HANDLE PortHandle,
+    OUT PPORT_MESSAGE LpcReply,
+    IN PPORT_MESSAGE LpcRequest
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSecureConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PPORT_VIEW ClientView OPTIONAL,
+    PSID Sid OPTIONAL,
+    PREMOTE_PORT_VIEW ServerView OPTIONAL,
+    PULONG MaxMessageLength OPTIONAL,
+    PVOID ConnectionInformation OPTIONAL,
+    PULONG ConnectionInformationLength OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+NtWriteRequestData(
+    HANDLE PortHandle,
+    PPORT_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+NTAPI
+ZwAcceptConnectPort(
+    PHANDLE PortHandle,
+    PVOID PortContext OPTIONAL,
+    PPORT_MESSAGE ConnectionRequest,
+    BOOLEAN AcceptConnection,
+    PPORT_VIEW ServerView OPTIONAL,
+    PREMOTE_PORT_VIEW ClientView OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+ZwCompleteConnectPort(
+    HANDLE PortHandle
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PPORT_VIEW ClientView OPTIONAL,
+    PREMOTE_PORT_VIEW ServerView OPTIONAL,
+    PULONG MaxMessageLength OPTIONAL,
+    PVOID ConnectionInformation OPTIONAL,
+    PULONG ConnectionInformationLength OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+ZwCreatePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectionInfoLength,
+    ULONG MaxMessageLength,
+    ULONG MaxPoolUsage
+);
+
+NTSTATUS
+NTAPI
+ZwCreateWaitablePort(
+    PHANDLE PortHandle,
+    POBJECT_ATTRIBUTES ObjectAttributes,
+    ULONG MaxConnectInfoLength,
+    ULONG MaxDataLength,
+    ULONG NPMessageQueueSize OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+ZwImpersonateClientOfPort(
+    HANDLE PortHandle,
+    PPORT_MESSAGE ClientMessage
+);
+
+NTSTATUS
+NTAPI
+ZwListenPort(
+    HANDLE PortHandle,
+    PPORT_MESSAGE ConnectionRequest
+);
+
+NTSTATUS
+NTAPI
+ZwQueryInformationPort(
+    HANDLE PortHandle,
+    PORT_INFORMATION_CLASS PortInformationClass,
+    PVOID PortInformation,
+    ULONG PortInformationLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+NTAPI
+ZwReadRequestData(
+    HANDLE PortHandle,
+    PPORT_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+NTSTATUS
+NTAPI
+ZwReplyPort(
+    IN HANDLE PortHandle,
+    IN PPORT_MESSAGE LpcReply
+);
+
+NTSTATUS
+NTAPI
+ZwReplyWaitReceivePort(
+    IN HANDLE PortHandle,
+    OUT PVOID *PortContext OPTIONAL,
+    IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+    OUT PPORT_MESSAGE ReceiveMessage
+);
+
+NTSTATUS
+NTAPI
+ZwReplyWaitReceivePortEx(
+    IN HANDLE PortHandle,
+    OUT PVOID *PortContext OPTIONAL,
+    IN PPORT_MESSAGE ReplyMessage OPTIONAL,
+    OUT PPORT_MESSAGE ReceiveMessage,
+    IN PLARGE_INTEGER Timeout OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+ZwReplyWaitReplyPort(
+    IN HANDLE PortHandle,
+    OUT PPORT_MESSAGE ReplyMessage
+);
+
+NTSTATUS
+NTAPI
+ZwRequestPort(
+    IN HANDLE PortHandle,
+    IN PPORT_MESSAGE LpcMessage
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwRequestWaitReplyPort(
+    IN HANDLE PortHandle,
+    OUT PPORT_MESSAGE LpcReply,
+    IN PPORT_MESSAGE LpcRequest
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+ZwSecureConnectPort(
+    PHANDLE PortHandle,
+    PUNICODE_STRING PortName,
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos,
+    PPORT_VIEW ClientView OPTIONAL,
+    PSID Sid OPTIONAL,
+    PREMOTE_PORT_VIEW ServerView OPTIONAL,
+    PULONG MaxMessageLength OPTIONAL,
+    PVOID ConnectionInformation OPTIONAL,
+    PULONG ConnectionInformationLength OPTIONAL
+);
+
+NTSTATUS
+NTAPI
+ZwWriteRequestData(
+    HANDLE PortHandle,
+    PPORT_MESSAGE Message,
+    ULONG Index,
+    PVOID Buffer,
+    ULONG BufferLength,
+    PULONG ReturnLength
+);
+
+#endif
index 7b11921..33ae0d2 100644 (file)
@@ -1,89 +1,89 @@
-/*++ NDK Version: 0095\r
-\r
-Copyright (c) Alex Ionescu.  All rights reserved.\r
-\r
-Header Name:\r
-\r
-    pofuncs.h\r
-\r
-Abstract:\r
-\r
-    Function definitions for the Power Subsystem.\r
-\r
-Author:\r
-\r
-    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004\r
-\r
---*/\r
-\r
-#ifndef _POFUNCS_H\r
-#define _POFUNCS_H\r
-\r
-//\r
-// Dependencies\r
-//\r
-#include <umtypes.h>\r
-\r
-//\r
-// Native Calls\r
-//\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtInitiatePowerAction(\r
-    POWER_ACTION SystemAction,\r
-    SYSTEM_POWER_STATE MinSystemState,\r
-    ULONG Flags,\r
-    BOOLEAN Asynchronous\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtPowerInformation(\r
-    POWER_INFORMATION_LEVEL PowerInformationLevel,\r
-    PVOID InputBuffer,\r
-    ULONG InputBufferLength,\r
-    PVOID OutputBuffer,\r
-    ULONG OutputBufferLength\r
-);\r
-\r
-NTSYSCALLAPI\r
-NTSTATUS\r
-NTAPI\r
-NtSetSystemPowerState(\r
-    IN POWER_ACTION SystemAction,\r
-    IN SYSTEM_POWER_STATE MinSystemState,\r
-    IN ULONG Flags\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwInitiatePowerAction(\r
-    POWER_ACTION SystemAction,\r
-    SYSTEM_POWER_STATE MinSystemState,\r
-    ULONG Flags,\r
-    BOOLEAN Asynchronous\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwPowerInformation(\r
-    POWER_INFORMATION_LEVEL PowerInformationLevel,\r
-    PVOID InputBuffer,\r
-    ULONG InputBufferLength,\r
-    PVOID OutputBuffer,\r
-    ULONG OutputBufferLength\r
-);\r
-\r
-NTSYSAPI\r
-NTSTATUS\r
-NTAPI\r
-ZwSetSystemPowerState(\r
-    IN POWER_ACTION SystemAction,\r
-    IN SYSTEM_POWER_STATE MinSystemState,\r
-    IN ULONG Flags\r
-);\r
-#endif\r
+/*++ NDK Version: 0095
+
+Copyright (c) Alex Ionescu.  All rights reserved.
+
+Header Name:
+
+    pofuncs.h
+
+Abstract:
+
+    Function definitions for the Power Subsystem.
+
+Author:
+
+    Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
+
+--*/
+
+#ifndef _POFUNCS_H
+#define _POFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+
+//
+// Native Calls
+//
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtInitiatePowerAction(
+    POWER_ACTION SystemAction,
+    SYSTEM_POWER_STATE MinSystemState,
+    ULONG Flags,
+    BOOLEAN Asynchronous
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtPowerInformation(
+    POWER_INFORMATION_LEVEL PowerInformationLevel,
+    PVOID InputBuffer,
+    ULONG InputBufferLength,
+    PVOID OutputBuffer,
+    ULONG OutputBufferLength
+);
+
+NTSYSCALLAPI
+NTSTATUS
+NTAPI
+NtSetSystemPowerState(
+    IN POWER_ACTION SystemAction,
+    IN SYSTEM_POWER_STATE MinSystemState,
+    IN ULONG Flags
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwInitiatePowerAction(
+    POWER_ACTION SystemAction,
+    SYSTEM_POWER_STATE MinSystemState,
+    ULONG Flags,
+    BOOLEAN Asynchronous
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwPowerInformation(
+    POWER_INFORMATION_LEVEL PowerInformationLevel,
+    PVOID InputBuffer,
+    ULONG InputBufferLength,
+    PVOID OutputBuffer,
+    ULONG OutputBufferLength
+);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+ZwSetSystemPowerState(
+    IN POWER_ACTION SystemAction,
+    IN SYSTEM_POWER_STATE MinSystemState,
+    IN ULONG Flags
+);
+#endif
index 57813e3..7caf3bb 100644 (file)
-Native Development Kit README\r
-        NDK 1.00\r
------------------------------\r
-\r
-0. PREABMLE\r
-\r
-0.1 COPYRIGHT\r
-\r
-The NDK is Copyright © 2005 Alex Ionescu.\r
-\r
-0.2 CONTACT INFORMATION\r
-\r
-The author, Alex Ionescu, may be reached through the following means:\r
-\r
-Email:         alex.ionescu@reactos.com\r
-Mail:  2246, Duvernay. H3J 2Y3. Montreal, QC. CANADA.  \r
-Phone:         (514)581-7156\r
-\r
-1. LICENSE\r
-\r
-1.1 OPEN SOURCE USAGE\r
-\r
-Open Source Projects may choose to use one of either the two following licenses:\r
-\r
-GNU GENERAL PUBLIC LICENSE Version 2, June 1991\r
-\r
-               OR\r
-\r
-GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999\r
-\r
-The choice is yours to make based on the license which is most compatible with your\r
-software.\r
-\r
-You MUST read GPL.TXT or LGPL.TXT after your decision. Violating your chosen license\r
-voids your usage rights of the NDK and will lead to legal action on the part of the\r
-author.\r
-\r
-If your Open Source product does not use a license which is compatible with the ones\r
-listed above, please contact the author to reach a mutual agreement to find a better\r
-solution for your product. Alternatively, you may choose to use the Proprietary Usage\r
-license displayed below in section 1.2\r
-\r
-If you are unsure of whether or not your product qualifies as an Open Source product,\r
-please contact the Free Software Foundation, or visit their website at www.fsf.org.\r
-\r
-\r
-1.2 PROPRIETARY USAGE\r
-\r
-Because it may be undesirable or impossible to adapt this software to your commercial\r
-and/or proprietary product(s) and/or service(s) using a (L)GPL license, proprietary\r
-products are free to use the following license:\r
-\r
-NDK LICENSE Version 1, November 2005\r
-\r
-You MUST read NDK.TXT for the full text of this license. Violating your chosen license\r
-voids your usage rights of the NDK, constitutes a copyright violation, and will lead to\r
-legal action on the part of the author.\r
-\r
-If you are unsure of have any questions about the NDK License, please contact the\r
-author for further clarification.\r
-\r
-2. ORIGINS OF NDK MATERIAL, AND ADDING YOUR OWN\r
-\r
-2.1 CONTRIBUTIONS AND SOURCES\r
-\r
-The NDK could not exist without the various contributions made by a variety of people\r
-and sources. The following public sources of information were lawfully used:\r
-\r
-- GNU NTIFS.H, Revision 43\r
-- W32API, Version 2.5\r
-- Microsoft Driver Development Kit 2003 SP1\r
-- Microsoft Driver Development Kit 2000\r
-- Microsoft Driver Development Kit NT 4\r
-- Microsoft Driver Development Kit WinME\r
-- Microsoft Installable File Systems Kit 2003 SP1\r
-- Microsoft Windows Debugger (WinDBG) 6.5.0003.7\r
-- Microsoft Public Symbolic Data\r
-- Microsoft Public Windows Binaries (strings)\r
-- OSR Technical Articles\r
-- Undocumented windows 2000 Secrets, a Programmer's Cookbook\r
-- Windows NT/2000 Native API Reference\r
-- Windows NT File System Internals\r
-- Windows Internals I - II\r
-- Windows Internals 4th Edition\r
-\r
-If the information contained in these sources was copyrighted, the information was not\r
-copied, but simply used as a basis for developing a compatible and identical definition.\r
-No information protected by a patent or NDA was used. All information was publically\r
-located through the Internet or purchased or licensed for lawful use.\r
-\r
-Additionally, the following people contributed to the NDK:\r
-\r
-- Art Yerkes\r
-- Eric Kohl\r
-- Filip Navara\r
-- Steven Edwards\r
-\r
-2.2 BECOMING A CONTRIBUTOR\r
-\r
-To contribute information to the NDK, simply contact the author with your new structure,\r
-definition, enumeration, or prototype. Please make sure that your addition is:\r
-\r
-1) Actually correct!\r
-2) Present in Windows NT 5, 5.1, 5.2 and/or 6.0\r
-3) Not already accessible through another public header in the DDK, IFS, WDK and/or PSDK.\r
-4) From a publically verifiable source. The author needs to be able to search for your\r
-   addition in a public information location (book, Internet, etc) and locate this definition.\r
-5) Not Reversed. Reversing a type is STRONGLY discouraged and a reversed type will more then likely\r
-   not be accepted, due to the fact that functionality and naming will be entirely guessed, and things\r
-   like unions are almost impossible to determine. It can also bring up possible legal ramifications\r
-   depending on your location. However, using a tool to dump the strings inside an executable\r
-   for the purpose of locating the actual name or definition of a structure (sometimes possible due\r
-   to ASSERTs or debugging strings) is considered 'fair use' and will be a likely candidate.\r
-\r
-If your addition satsfies these points, then please submit it, and also include whether or not\r
-you would like to be credited for it.\r
-\r
-3. USAGE\r
-\r
-3.1 ORGANIZATION\r
-\r
-   * The NDK is organized in a main folder (include/ndk) with arch-specific subfolders (ex: include/ndk/i386). \r
-   * The NDK is structured by NT Subsystem Component (ex: ex, ps, rtl, etc). \r
-   * The NDK can either be included on-demand (#include <ndk/xxxxx.h>) or globally (#include <ndk/ntndk.h>).\r
-     The former is recommended to reduce compile time. \r
-   * The NDK is structured by function and type. Every Subsystem Component has an associated "xxfuncs.h" and\r
-    "xxtypes.h" header, where "xx" is the Subsystem (ex: iofuncs.h, iotypes.h) \r
-   * The NDK has a special file called "umtypes.h" which exports to User-Mode or Native-Mode Applications the\r
-     basic NT types which are present in ntdef.h. This file cannot be included since it would conflict with\r
-     winnt.h and/or windef.h. Thus, umtypes.h provides the missing types. This file is automatically included\r
-     in a User-Mode NDK project. \r
-   * The NDK also includes a file called "umfuncs.h" which exports to User-Mode or Native-Mode Applications\r
-     undocumented functions which can only be accessed from ntdll.dll. \r
-   * The NDK has another special file called "ifssupp.h", which exports to Kernel-Mode drivers a few types which\r
-     are only documented in the IFS kit, and are part of some native definitions. It will be deprecated next year\r
-     with the release of the WDK. \r
-\r
-3.2 USING IN YOUR PROJECT\r
-\r
-    *  User Mode Application requiring Native Types: \r
-\r
-       #define WIN32_NO_STATUS   /* Tell Windows headers you'll use ntstatus.s from NDK */\r
-       #include <windows.h>      /* Declare Windows Headers like you normally would */\r
-       #include <ntndk.h>        /* Declare the NDK Headers */\r
-\r
-    * Native Mode Application: \r
-\r
-       #include <windows.h>      /* Declare Windows Headers for basic types. NEEDED UNTIL NDK 1.5 */\r
-       #include <ntndk.h>        /* Declare the NDK Headers */\r
-\r
-    * Kernel Mode Driver: \r
-\r
-       #include <ntddk.h>       /* Declare DDK Headers like you normally would */\r
-       #include <ntndk.h>       /* Declare the NDK Headers */\r
-\r
-    * You may also include only the files you need (example for User-Mode application):\r
-\r
-       #define WIN32_NO_STATUS   /* Tell Windows headers you'll use ntstatus.s from NDK */\r
-       #include <windows.h>      /* Declare Windows Headers like you normally would */\r
-       #include <rtlfuncs.h>     /* Declare the Rtl* Functions */\r
-\r
-3.3 CAVEATS\r
-\r
-    * winternl.h: This header, part of the PSDK, was released by Microsoft as part of one of the governmen\r
-      lawsuits against it, and documents a certain (minimal) part of the Native API and/or types. Unforunately,\r
-      Microsoft decided to hack the Native Types and to define them incorrectly, replacing real members by "reserved"\r
-      ones. As such, you 'cannot include winternl.h in any project that uses the NDK. Note however, that the NDK fully\r
-      replaces it and retains compatibility with any project that used it.\r
-    * Native programs: Native programs must include "windows.h" until the next release of the NDK (1.5). The upcoming\r
-      version will automatically detect the lack of missing types and include them. Note however that you will still need\r
-      to have the PSDK installed.\r
+Native Development Kit README
+        NDK 1.00
+-----------------------------
+
+0. PREABMLE
+
+0.1 COPYRIGHT
+
+The NDK is Copyright © 2005 Alex Ionescu.
+
+0.2 CONTACT INFORMATION
+
+The author, Alex Ionescu, may be reached through the following means:
+
+Email:         alex.ionescu@reactos.com
+Mail:  2246, Duvernay. H3J 2Y3. Montreal, QC. CANADA.  
+Phone:         (514)581-7156
+
+1. LICENSE
+
+1.1 OPEN SOURCE USAGE
+
+Open Source Projects may choose to use one of either the two following licenses:
+
+GNU GENERAL PUBLIC LICENSE Version 2, June 1991
+
+               OR
+
+GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
+
+The choice is yours to make based on the license which is most compatible with your
+software.
+
+You MUST read GPL.TXT or LGPL.TXT after your decision. Violating your chosen license
+voids your usage rights of the NDK and will lead to legal action on the part of the
+author.
+
+If your Open Source product does not use a license which is compatible with the ones
+listed above, please contact the author to reach a mutual agreement to find a better
+solution for your product. Alternatively, you may choose to use the Proprietary Usage
+license displayed below in section 1.2
+
+If you are unsure of whether or not your product qualifies as an Open Source product,
+please contact the Free Software Foundation, or visit their website at www.fsf.org.
+
+
+1.2 PROPRIETARY USAGE
+
+Because it may be undesirable or impossible to adapt this software to your commercial
+and/or proprietary product(s) and/or service(s) using a (L)GPL license, proprietary
+products are free to use the following license:
+
+NDK LICENSE Version 1, November 2005
+
+You MUST read NDK.TXT for the full text of this license. Violating your chosen license
+voids your usage rights of the NDK, constitutes a copyright violation, and will lead to
+legal action on the part of the author.
+
+If you are unsure of have any questions about the NDK License, please contact the
+author for further clarification.
+
+2. ORIGINS OF NDK MATERIAL, AND ADDING YOUR OWN
+
+2.1 CONTRIBUTIONS AND SOURCES
+
+The NDK could not exist without the various contributions made by a variety of people
+and sources. The following public sources of information were lawfully used:
+
+- GNU NTIFS.H, Revision 43
+- W32API, Version 2.5
+- Microsoft Driver Development Kit 2003 SP1
+- Microsoft Driver Development Kit 2000
+- Microsoft Driver Development Kit NT 4
+- Microsoft Driver Development Kit WinME
+- Microsoft Installable File Systems Kit 2003 SP1
+- Microsoft Windows Debugger (WinDBG) 6.5.0003.7
+- Microsoft Public Symbolic Data
+- Microsoft Public Windows Binaries (strings)
+- OSR Technical Articles
+- Undocumented windows 2000 Secrets, a Programmer's Cookbook
+- Windows NT/2000 Native API Reference
+- Windows NT File System Internals
+- Windows Internals I - II
+- Windows Internals 4th Edition
+
+If the information contained in these sources was copyrighted, the information was not
+copied, but simply used as a basis for developing a compatible and identical definition.
+No information protected by a patent or NDA was used. All information was publically
+located through the Internet or purchased or licensed for lawful use.
+
+Additionally, the following people contributed to the NDK:
+
+- Art Yerkes
+- Eric Kohl
+- Filip Navara
+- Steven Edwards
+
+2.2 BECOMING A CONTRIBUTOR
+
+To contribute information to the NDK, simply contact the author with your new structure,
+definition, enumeration, or prototype. Please make sure that your addition is:
+
+1) Actually correct!
+2) Present in Windows NT 5, 5.1, 5.2 and/or 6.0
+3) Not already accessible through another public header in the DDK, IFS, WDK and/or PSDK.
+4) From a publically verifiable source. The author needs to be able to search for your
+   addition in a public information location (book, Internet, etc) and locate this definition.
+5) Not Reversed. Reversing a type is STRONGLY discouraged and a reversed type will more then likely
+   not be accepted, due to the fact that functionality and naming will be entirely guessed, and things
+   like unions are almost impossible to determine. It can also bring up possible legal ramifications
+   depending on your location. However, using a tool to dump the strings inside an executable
+   for the purpose of locating the actual name or definition of a structure (sometimes possible due
+   to ASSERTs or debugging strings) is considered 'fair use' and will be a likely candidate.
+
+If your addition satsfies these points, then please submit it, and also include whether or not
+you would like to be credited for it.
+
+3. USAGE
+
+3.1 ORGANIZATION
+
+   * The NDK is organized in a main folder (include/ndk) with arch-specific subfolders (ex: include/ndk/i386). 
+   * The NDK is structured by NT Subsystem Component (ex: ex, ps, rtl, etc). 
+   * The NDK can either be included on-demand (#include <ndk/xxxxx.h>) or globally (#include <ndk/ntndk.h>).
+     The former is recommended to reduce compile time. 
+   * The NDK is structured by function and type. Every Subsystem Component has an associated "xxfuncs.h" and
+    "xxtypes.h" header, where "xx" is the Subsystem (ex: iofuncs.h, iotypes.h) 
+   * The NDK has a special file called "umtypes.h" which exports to User-Mode or Native-Mode Applications the
+     basic NT types which are present in ntdef.h. This file cannot be included since it would conflict with
+     winnt.h and/or windef.h. Thus, umtypes.h provides the missing types. This file is automatically included
+     in a User-Mode NDK project. 
+   * The NDK also includes a file called "umfuncs.h" which exports to User-Mode or Native-Mode Applications
+     undocumented functions which can only be accessed from ntdll.dll. 
+   * The NDK has another special file called "ifssupp.h", which exports to Kernel-Mode drivers a few types which
+     are only documented in the IFS kit, and are part of some native definitions. It will be deprecated next year
+     with the release of the WDK. 
+
+3.2 USING IN YOUR PROJECT
+
+    *  User Mode Application requiring Native Types: 
+
+       #define WIN32_NO_STATUS   /* Tell Windows headers you'll use ntstatus.s from NDK */
+       #include <windows.h>      /* Declare Windows Headers like you normally would */
+       #include <ntndk.h>        /* Declare the NDK Headers */
+
+    * Native Mode Application: 
+
+       #include <windows.h>      /* Declare Windows Headers for basic types. NEEDED UNTIL NDK 1.5 */
+       #include <ntndk.h>        /* Declare the NDK Headers */
+
+    * Kernel Mode Driver: 
+
+       #include <ntddk.h>       /* Declare DDK Headers like you normally would */
+       #include <ntndk.h>       /* Declare the NDK Headers */
+
+    * You may also include only the files you need (example for User-Mode application):
+
+       #define WIN32_NO_STATUS   /* Tell Windows headers you'll use ntstatus.s from NDK */
+       #include <windows.h>      /* Declare Windows Headers like you normally would */
+       #include <rtlfuncs.h>     /* Declare the Rtl* Functions */
+
+3.3 CAVEATS
+
+    * winternl.h: This header, part of the PSDK, was released by Microsoft as part of one of the governmen
+      lawsuits against it, and documents a certain (minimal) part of the Native API and/or types. Unforunately,
+      Microsoft decided to hack the Native Types and to define them incorrectly, replacing real members by "reserved"
+      ones. As such, you 'cannot include winternl.h in any project that uses the NDK. Note however, that the NDK fully
+      replaces it and retains compatibility with any project that used it.
+    * Native programs: Native programs must include "windows.h" until the next release of the NDK (1.5). The upcoming
+      version will automatically detect the lack of missing types and include them. Note however that you will still need
+      to have the PSDK installed.