-/*++ 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
-NTSTATUS\r
-NTAPI\r
-NtAddAtom(\r
- IN PWSTR AtomName,\r
- IN ULONG AtomNameLength,\r
- IN OUT PRTL_ATOM Atom\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtCancelTimer(\r
- IN HANDLE TimerHandle,\r
- OUT PBOOLEAN CurrentState OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtClearEvent(\r
- IN HANDLE EventHandle\r
-);\r
-\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
-NTSTATUS\r
-NTAPI\r
-NtCreateEventPair(\r
- OUT PHANDLE EventPairHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\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
-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
-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
-NTSTATUS\r
-NTAPI\r
-NtDeleteAtom(\r
- IN RTL_ATOM Atom\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtDisplayString(\r
- IN PUNICODE_STRING DisplayString\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtFindAtom(\r
- IN PWSTR AtomName,\r
- IN ULONG AtomNameLength,\r
- OUT PRTL_ATOM Atom OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtOpenEvent(\r
- OUT PHANDLE EventHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtOpenEventPair(\r
- OUT PHANDLE EventPairHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtOpenMutant(\r
- OUT PHANDLE MutantHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtOpenSemaphore(\r
- OUT PHANDLE SemaphoreHandle,\r
- IN ACCESS_MASK DesiredAcces,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtOpenTimer(\r
- OUT PHANDLE TimerHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtPulseEvent(\r
- IN HANDLE EventHandle,\r
- IN PLONG PulseCount OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtQueryDefaultLocale(\r
- IN BOOLEAN UserProfile,\r
- OUT PLCID DefaultLocaleId\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtQueryDefaultUILanguage(\r
- PLANGID LanguageId\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-NtQueryInstallUILanguage(\r
- PLANGID LanguageId\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-NtQuerySystemEnvironmentValue(\r
- IN PUNICODE_STRING Name,\r
- OUT PWSTR Value,\r
- ULONG Length,\r
- PULONG ReturnLength\r
-);\r
-\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
-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
-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
-NTSTATUS\r
-NTAPI\r
-NtReleaseMutant(\r
- IN HANDLE MutantHandle,\r
- IN PLONG ReleaseCount OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtReleaseSemaphore(\r
- IN HANDLE SemaphoreHandle,\r
- IN LONG ReleaseCount,\r
- OUT PLONG PreviousCount\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtResetEvent(\r
- IN HANDLE EventHandle,\r
- OUT PLONG NumberOfWaitingThreads OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultLocale(\r
- IN BOOLEAN UserProfile,\r
- IN LCID DefaultLocaleId\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultUILanguage(\r
- LANGID LanguageId\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetDefaultHardErrorPort(\r
- IN HANDLE PortHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetEvent(\r
- IN HANDLE EventHandle,\r
- OUT PLONG PreviousState OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetHighEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetHighWaitLowEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetLowEventPair(\r
- HANDLE EventPair\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetLowWaitHighEventPair(\r
- HANDLE EventPair\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetSystemEnvironmentValue(\r
- IN PUNICODE_STRING VariableName,\r
- IN PUNICODE_STRING Value\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtSetSystemInformation(\r
- IN SYSTEM_INFORMATION_CLASS SystemInformationClass,\r
- IN PVOID SystemInformation,\r
- IN ULONG SystemInformationLength\r
-);\r
-\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
-NTSTATUS\r
-NTAPI\r
-NtSetUuidSeed(\r
- IN PUCHAR UuidSeed\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtShutdownSystem(\r
- IN SHUTDOWN_ACTION Action\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtWaitHighEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-NtWaitLowEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-ZwCancelTimer(\r
- IN HANDLE TimerHandle,\r
- OUT PBOOLEAN CurrentState OPTIONAL\r
-);\r
-#endif\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwClearEvent(\r
- IN HANDLE EventHandle\r
-);\r
-\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
-NTSTATUS\r
-NTAPI\r
-ZwCreateEventPair(\r
- OUT PHANDLE EventPairHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\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
-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
-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
-NTSTATUS\r
-NTAPI\r
-ZwDeleteAtom(\r
- IN RTL_ATOM Atom\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwDisplayString(\r
- IN PUNICODE_STRING DisplayString\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwFindAtom(\r
- IN PWSTR AtomName,\r
- IN ULONG AtomNameLength,\r
- OUT PRTL_ATOM Atom OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenEvent(\r
- OUT PHANDLE EventHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenEventPair(\r
- OUT PHANDLE EventPairHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwOpenMutant(\r
- OUT PHANDLE MutantHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-\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
-NTSTATUS\r
-NTAPI\r
-ZwOpenTimer(\r
- OUT PHANDLE TimerHandle,\r
- IN ACCESS_MASK DesiredAccess,\r
- IN POBJECT_ATTRIBUTES ObjectAttributes\r
-);\r
-#endif\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwPulseEvent(\r
- IN HANDLE EventHandle,\r
- IN PLONG PulseCount OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryDefaultLocale(\r
- IN BOOLEAN UserProfile,\r
- OUT PLCID DefaultLocaleId\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwQueryDefaultUILanguage(\r
- PLANGID LanguageId\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-ZwQueryInstallUILanguage(\r
- PLANGID LanguageId\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-ZwQuerySystemEnvironmentValue(\r
- IN PUNICODE_STRING Name,\r
- OUT PWSTR Value,\r
- ULONG Length,\r
- PULONG ReturnLength\r
-);\r
-\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
-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
-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
-NTSTATUS\r
-NTAPI\r
-ZwReleaseMutant(\r
- IN HANDLE MutantHandle,\r
- IN PLONG ReleaseCount OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwReleaseSemaphore(\r
- IN HANDLE SemaphoreHandle,\r
- IN LONG ReleaseCount,\r
- OUT PLONG PreviousCount\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwResetEvent(\r
- IN HANDLE EventHandle,\r
- OUT PLONG NumberOfWaitingThreads OPTIONAL\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetDefaultLocale(\r
- IN BOOLEAN UserProfile,\r
- IN LCID DefaultLocaleId\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetDefaultUILanguage(\r
- LANGID LanguageId\r
-);\r
-\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
-NTSTATUS\r
-NTAPI\r
-ZwSetHighEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetHighWaitLowEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetLowEventPair(\r
- HANDLE EventPair\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetLowWaitHighEventPair(\r
- HANDLE EventPair\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwSetSystemEnvironmentValue(\r
- IN PUNICODE_STRING VariableName,\r
- IN PUNICODE_STRING Value\r
-);\r
-\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
-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
-NTSTATUS\r
-NTAPI\r
-ZwSetUuidSeed(\r
- IN PUCHAR UuidSeed\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwShutdownSystem(\r
- IN SHUTDOWN_ACTION Action\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwWaitHighEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\r
-NTSTATUS\r
-NTAPI\r
-ZwWaitLowEventPair(\r
- IN HANDLE EventPairHandle\r
-);\r
-\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: 0098
+
+Copyright (c) Alex Ionescu. All rights reserved.
+
+Header Name:
+
+ exfuncs.h
+
+Abstract:
+
+ Function definitions for the Executive.
+
+Author:
+
+ Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
+
+--*/
+
+#ifndef _EXFUNCS_H
+#define _EXFUNCS_H
+
+//
+// Dependencies
+//
+#include <umtypes.h>
+#include <pstypes.h>
+#include <extypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Don't include WMI headers just for one define
+//
+#ifndef PEVENT_TRACE_HEADER_DEFINED
+#define PEVENT_TRACE_HEADER_DEFINED
+typedef struct _EVENT_TRACE_HEADER *PEVENT_TRACE_HEADER;
+#endif
+
+#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
+);
+
+//
+// Handle Table Functions
+//
+NTKERNELAPI
+BOOLEAN
+NTAPI
+ExEnumHandleTable(
+ IN PHANDLE_TABLE HandleTable,
+ IN PEX_ENUM_HANDLE_CALLBACK EnumHandleProcedure,
+ IN OUT PVOID Context,
+ OUT PHANDLE Handle OPTIONAL
+);
+
+//
+// Resource Functions
+//
+PVOID
+NTAPI
+ExEnterCriticalRegionAndAcquireResourceExclusive(
+ IN PERESOURCE Resource
+);
+
+PVOID
+NTAPI
+ExEnterCriticalRegionAndAcquireResourceShared(
+ IN PERESOURCE Resource
+);
+
+PVOID
+NTAPI
+ExEnterCriticalRegionAndAcquireSharedWaitForExclusive(
+ IN PERESOURCE Resource
+);
+
+VOID
+FASTCALL
+ExReleaseResourceAndLeaveCriticalRegion(
+ IN PERESOURCE Resource
+);
+
+#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
+NtCreateKeyedEvent(
+ OUT PHANDLE KeyedEventHandle,
+ IN ACCESS_MASK DesiredAccess,
+ IN POBJECT_ATTRIBUTES ObjectAttributes,
+ IN ULONG Flags
+);
+
+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
+NtEnumerateSystemEnvironmentValuesEx(
+ IN ULONG InformationClass,
+ IN PVOID Buffer,
+ IN ULONG BufferLength
+);
+
+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
+NtOpenKeyedEvent(
+ 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(
+ LANGID* 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(
+ LANGID* 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
+NtQuerySystemEnvironmentValueEx(
+ IN PUNICODE_STRING VariableName,
+ IN LPGUID VendorGuid,
+ IN PVOID Value,
+ IN OUT PULONG ReturnLength,
+ IN OUT PULONG Attributes
+);
+
+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
+NtReleaseKeyedEvent(
+ IN HANDLE EventHandle,
+ IN PVOID Key,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout 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
+NtSetEventBoostPriority(
+ IN HANDLE EventHandle
+);
+
+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
+NtSetSystemEnvironmentValueEx(
+ IN PUNICODE_STRING VariableName,
+ IN LPGUID VendorGuid
+);
+
+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
+NtWaitForKeyedEvent(
+ IN HANDLE EventHandle,
+ IN PVOID Key,
+ IN BOOLEAN Alertable,
+ IN PLARGE_INTEGER Timeout OPTIONAL
+);
+
+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
+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
+);
+
+NTSYSCALLAPI
+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(
+ LANGID* 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(
+ LANGID* 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 SIZE_T Length,
+ OUT PSIZE_T 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 SIZE_T 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
+);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif