3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the Executive.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
30 // Don't include WMI headers just for one define
32 #ifndef PEVENT_TRACE_HEADER_DEFINED
33 #define PEVENT_TRACE_HEADER_DEFINED
34 typedef struct _EVENT_TRACE_HEADER
*PEVENT_TRACE_HEADER
;
37 #ifndef NTOS_MODE_USER
39 // Fast Mutex functions
43 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(
49 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
58 ExfAcquirePushLockExclusive(
59 PEX_PUSH_LOCK PushLock
64 ExfAcquirePushLockShared(
65 PEX_PUSH_LOCK PushLock
71 PEX_PUSH_LOCK PushLock
76 ExfReleasePushLockExclusive(
77 PEX_PUSH_LOCK PushLock
82 ExfReleasePushLockShared(
83 PEX_PUSH_LOCK PushLock
89 PEX_PUSH_LOCK PushLock
95 PEX_PUSH_LOCK PushLock
,
96 PVOID CurrentWaitBlock
100 // Handle Table Functions
106 IN PHANDLE_TABLE HandleTable
,
107 IN PEX_ENUM_HANDLE_CALLBACK EnumHandleProcedure
,
108 IN OUT PVOID Context
,
109 OUT PHANDLE Handle OPTIONAL
122 IN ULONG AtomNameLength
,
123 IN OUT PRTL_ATOM Atom
130 IN HANDLE TimerHandle
,
131 OUT PBOOLEAN CurrentState OPTIONAL
138 IN HANDLE EventHandle
145 OUT PHANDLE EventHandle
,
146 IN ACCESS_MASK DesiredAccess
,
147 IN POBJECT_ATTRIBUTES ObjectAttributes
,
148 IN EVENT_TYPE EventType
,
149 IN BOOLEAN InitialState
156 OUT PHANDLE EventPairHandle
,
157 IN ACCESS_MASK DesiredAccess
,
158 IN POBJECT_ATTRIBUTES ObjectAttributes
165 OUT PHANDLE KeyedEventHandle
,
166 IN ACCESS_MASK DesiredAccess
,
167 IN POBJECT_ATTRIBUTES ObjectAttributes
,
175 OUT PHANDLE MutantHandle
,
176 IN ACCESS_MASK DesiredAccess
,
177 IN POBJECT_ATTRIBUTES ObjectAttributes
,
178 IN BOOLEAN InitialOwner
185 OUT PHANDLE SemaphoreHandle
,
186 IN ACCESS_MASK DesiredAccess
,
187 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
188 IN LONG InitialCount
,
196 OUT PHANDLE TimerHandle
,
197 IN ACCESS_MASK DesiredAccess
,
198 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
199 IN TIMER_TYPE TimerType
213 IN PUNICODE_STRING DisplayString
219 NtEnumerateSystemEnvironmentValuesEx(
220 IN ULONG InformationClass
,
222 IN ULONG BufferLength
230 IN ULONG AtomNameLength
,
231 OUT PRTL_ATOM Atom OPTIONAL
238 OUT PHANDLE EventHandle
,
239 IN ACCESS_MASK DesiredAccess
,
240 IN POBJECT_ATTRIBUTES ObjectAttributes
247 OUT PHANDLE EventHandle
,
248 IN ACCESS_MASK DesiredAccess
,
249 IN POBJECT_ATTRIBUTES ObjectAttributes
256 OUT PHANDLE EventPairHandle
,
257 IN ACCESS_MASK DesiredAccess
,
258 IN POBJECT_ATTRIBUTES ObjectAttributes
265 OUT PHANDLE MutantHandle
,
266 IN ACCESS_MASK DesiredAccess
,
267 IN POBJECT_ATTRIBUTES ObjectAttributes
274 OUT PHANDLE SemaphoreHandle
,
275 IN ACCESS_MASK DesiredAcces
,
276 IN POBJECT_ATTRIBUTES ObjectAttributes
283 OUT PHANDLE TimerHandle
,
284 IN ACCESS_MASK DesiredAccess
,
285 IN POBJECT_ATTRIBUTES ObjectAttributes
292 IN HANDLE EventHandle
,
293 IN PLONG PulseCount OPTIONAL
299 NtQueryDefaultLocale(
300 IN BOOLEAN UserProfile
,
301 OUT PLCID DefaultLocaleId
307 NtQueryDefaultUILanguage(
315 IN HANDLE EventHandle
,
316 IN EVENT_INFORMATION_CLASS EventInformationClass
,
317 OUT PVOID EventInformation
,
318 IN ULONG EventInformationLength
,
319 OUT PULONG ReturnLength
325 NtQueryInformationAtom(
327 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
328 OUT PVOID AtomInformation
,
329 IN ULONG AtomInformationLength
,
330 OUT PULONG ReturnLength OPTIONAL
336 NtQueryInstallUILanguage(
344 IN HANDLE MutantHandle
,
345 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
346 OUT PVOID MutantInformation
,
348 OUT PULONG ResultLength
355 IN HANDLE SemaphoreHandle
,
356 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
357 OUT PVOID SemaphoreInformation
,
359 OUT PULONG ReturnLength
365 NtQuerySystemEnvironmentValue(
366 IN PUNICODE_STRING Name
,
375 NtQuerySystemEnvironmentValueEx(
376 IN PUNICODE_STRING VariableName
,
377 IN LPGUID VendorGuid
,
379 IN OUT PULONG ReturnLength
,
380 IN OUT PULONG Attributes
386 NtQuerySystemInformation(
387 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
388 OUT PVOID SystemInformation
,
390 OUT PSIZE_T ResultLength
397 IN HANDLE TimerHandle
,
398 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
399 OUT PVOID TimerInformation
,
401 OUT PULONG ResultLength
408 IN NTSTATUS ErrorStatus
,
409 IN ULONG NumberOfParameters
,
410 IN ULONG UnicodeStringParameterMask
,
411 IN PULONG_PTR Parameters
,
412 IN ULONG ValidResponseOptions
,
420 IN HANDLE MutantHandle
,
421 IN PLONG ReleaseCount OPTIONAL
428 IN HANDLE EventHandle
,
430 IN BOOLEAN Alertable
,
431 IN PLARGE_INTEGER Timeout OPTIONAL
438 IN HANDLE SemaphoreHandle
,
439 IN LONG ReleaseCount
,
440 OUT PLONG PreviousCount
447 IN HANDLE EventHandle
,
448 OUT PLONG NumberOfWaitingThreads OPTIONAL
455 IN BOOLEAN UserProfile
,
456 IN LCID DefaultLocaleId
462 NtSetDefaultUILanguage(
469 NtSetDefaultHardErrorPort(
477 IN HANDLE EventHandle
,
478 OUT PLONG PreviousState OPTIONAL
484 NtSetEventBoostPriority(
485 IN HANDLE EventHandle
492 IN HANDLE EventPairHandle
498 NtSetHighWaitLowEventPair(
499 IN HANDLE EventPairHandle
512 NtSetLowWaitHighEventPair(
519 NtSetSystemEnvironmentValue(
520 IN PUNICODE_STRING VariableName
,
521 IN PUNICODE_STRING Value
527 NtSetSystemEnvironmentValueEx(
528 IN PUNICODE_STRING VariableName
,
535 NtSetSystemInformation(
536 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
537 IN PVOID SystemInformation
,
538 IN SIZE_T SystemInformationLength
545 IN HANDLE TimerHandle
,
546 IN PLARGE_INTEGER DueTime
,
547 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
548 IN PVOID TimerContext
,
549 IN BOOLEAN WakeTimer
,
550 IN LONG Period OPTIONAL
,
551 OUT PBOOLEAN PreviousState OPTIONAL
565 IN SHUTDOWN_ACTION Action
572 IN HANDLE EventHandle
,
574 IN BOOLEAN Alertable
,
575 IN PLARGE_INTEGER Timeout OPTIONAL
582 IN HANDLE EventPairHandle
589 IN HANDLE EventPairHandle
596 IN ULONG TraceHandle
,
598 IN ULONG TraceHeaderLength
,
599 IN PEVENT_TRACE_HEADER TraceHeader
607 IN ULONG AtomNameLength
,
608 IN OUT PRTL_ATOM Atom
611 #ifdef NTOS_MODE_USER
616 IN HANDLE TimerHandle
,
617 OUT PBOOLEAN CurrentState OPTIONAL
625 IN HANDLE EventHandle
632 OUT PHANDLE EventHandle
,
633 IN ACCESS_MASK DesiredAccess
,
634 IN POBJECT_ATTRIBUTES ObjectAttributes
,
635 IN EVENT_TYPE EventType
,
636 IN BOOLEAN InitialState
643 OUT PHANDLE EventPairHandle
,
644 IN ACCESS_MASK DesiredAccess
,
645 IN POBJECT_ATTRIBUTES ObjectAttributes
652 OUT PHANDLE MutantHandle
,
653 IN ACCESS_MASK DesiredAccess
,
654 IN POBJECT_ATTRIBUTES ObjectAttributes
,
655 IN BOOLEAN InitialOwner
662 OUT PHANDLE SemaphoreHandle
,
663 IN ACCESS_MASK DesiredAccess
,
664 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
665 IN LONG InitialCount
,
669 #ifdef NTOS_MODE_USER
674 OUT PHANDLE TimerHandle
,
675 IN ACCESS_MASK DesiredAccess
,
676 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
677 IN TIMER_TYPE TimerType
692 IN PUNICODE_STRING DisplayString
700 IN ULONG AtomNameLength
,
701 OUT PRTL_ATOM Atom OPTIONAL
708 OUT PHANDLE EventHandle
,
709 IN ACCESS_MASK DesiredAccess
,
710 IN POBJECT_ATTRIBUTES ObjectAttributes
717 OUT PHANDLE EventPairHandle
,
718 IN ACCESS_MASK DesiredAccess
,
719 IN POBJECT_ATTRIBUTES ObjectAttributes
726 OUT PHANDLE MutantHandle
,
727 IN ACCESS_MASK DesiredAccess
,
728 IN POBJECT_ATTRIBUTES ObjectAttributes
735 OUT PHANDLE SemaphoreHandle
,
736 IN ACCESS_MASK DesiredAcces
,
737 IN POBJECT_ATTRIBUTES ObjectAttributes
740 #ifdef NTOS_MODE_USER
745 OUT PHANDLE TimerHandle
,
746 IN ACCESS_MASK DesiredAccess
,
747 IN POBJECT_ATTRIBUTES ObjectAttributes
755 IN HANDLE EventHandle
,
756 IN PLONG PulseCount OPTIONAL
762 ZwQueryDefaultLocale(
763 IN BOOLEAN UserProfile
,
764 OUT PLCID DefaultLocaleId
770 ZwQueryDefaultUILanguage(
778 IN HANDLE EventHandle
,
779 IN EVENT_INFORMATION_CLASS EventInformationClass
,
780 OUT PVOID EventInformation
,
781 IN ULONG EventInformationLength
,
782 OUT PULONG ReturnLength
788 ZwQueryInformationAtom(
790 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
791 OUT PVOID AtomInformation
,
792 IN ULONG AtomInformationLength
,
793 OUT PULONG ReturnLength OPTIONAL
799 ZwQueryInstallUILanguage(
807 IN HANDLE MutantHandle
,
808 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
809 OUT PVOID MutantInformation
,
811 OUT PULONG ResultLength
818 IN HANDLE SemaphoreHandle
,
819 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
820 OUT PVOID SemaphoreInformation
,
822 OUT PULONG ReturnLength
828 ZwQuerySystemEnvironmentValue(
829 IN PUNICODE_STRING Name
,
838 ZwQuerySystemInformation(
839 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
840 OUT PVOID SystemInformation
,
842 OUT PSIZE_T ResultLength
849 IN HANDLE TimerHandle
,
850 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
851 OUT PVOID TimerInformation
,
853 OUT PULONG ResultLength
860 IN NTSTATUS ErrorStatus
,
861 IN ULONG NumberOfParameters
,
862 IN ULONG UnicodeStringParameterMask
,
863 IN PULONG_PTR Parameters
,
864 IN ULONG ValidResponseOptions
,
872 IN HANDLE MutantHandle
,
873 IN PLONG ReleaseCount OPTIONAL
880 IN HANDLE SemaphoreHandle
,
881 IN LONG ReleaseCount
,
882 OUT PLONG PreviousCount
889 IN HANDLE EventHandle
,
890 OUT PLONG NumberOfWaitingThreads OPTIONAL
897 IN BOOLEAN UserProfile
,
898 IN LCID DefaultLocaleId
904 ZwSetDefaultUILanguage(
911 ZwSetDefaultHardErrorPort(
919 IN HANDLE EventHandle
,
920 OUT PLONG PreviousState OPTIONAL
927 IN HANDLE EventPairHandle
933 ZwSetHighWaitLowEventPair(
934 IN HANDLE EventPairHandle
947 ZwSetLowWaitHighEventPair(
954 ZwSetSystemEnvironmentValue(
955 IN PUNICODE_STRING VariableName
,
956 IN PUNICODE_STRING Value
962 ZwSetSystemInformation(
963 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
964 IN PVOID SystemInformation
,
965 IN SIZE_T SystemInformationLength
968 #ifdef NTOS_MODE_USER
973 IN HANDLE TimerHandle
,
974 IN PLARGE_INTEGER DueTime
,
975 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
976 IN PVOID TimerContext
,
977 IN BOOLEAN WakeTimer
,
978 IN LONG Period OPTIONAL
,
979 OUT PBOOLEAN PreviousState OPTIONAL
994 IN SHUTDOWN_ACTION Action
1000 ZwWaitHighEventPair(
1001 IN HANDLE EventPairHandle
1008 IN HANDLE EventPairHandle
1015 IN ULONG TraceHandle
,
1017 IN ULONG TraceHeaderLength
,
1018 IN PEVENT_TRACE_HEADER TraceHeader