3 Copyright (c) Alex Ionescu. All rights reserved.
11 Function definitions for the Executive.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
34 // Don't include WMI headers just for one define
36 #ifndef PEVENT_TRACE_HEADER_DEFINED
37 #define PEVENT_TRACE_HEADER_DEFINED
38 typedef struct _EVENT_TRACE_HEADER
*PEVENT_TRACE_HEADER
;
41 #ifndef NTOS_MODE_USER
43 // Fast Mutex functions
47 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(
48 _Inout_ PFAST_MUTEX FastMutex
53 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
54 _Inout_ PFAST_MUTEX FastMutex
62 ExfAcquirePushLockExclusive(
63 _Inout_ PEX_PUSH_LOCK PushLock
68 ExfAcquirePushLockShared(
69 _Inout_ PEX_PUSH_LOCK PushLock
75 _Inout_ PEX_PUSH_LOCK PushLock
80 ExfReleasePushLockExclusive(
81 _Inout_ PEX_PUSH_LOCK PushLock
86 ExfReleasePushLockShared(
87 _Inout_ PEX_PUSH_LOCK PushLock
93 _Inout_ PEX_PUSH_LOCK PushLock
99 _Inout_ PEX_PUSH_LOCK PushLock
,
100 _Inout_ PVOID CurrentWaitBlock
104 // Handle Table Functions
110 _In_ PHANDLE_TABLE HandleTable
,
111 _In_ PEX_ENUM_HANDLE_CALLBACK EnumHandleProcedure
,
112 _Inout_ PVOID Context
,
113 _Out_opt_ PHANDLE Handle
117 // HardError Functions
122 _In_ NTSTATUS ErrorStatus
,
123 _In_ ULONG NumberOfParameters
,
124 _In_ ULONG UnicodeStringParameterMask
,
125 _In_ PULONG_PTR Parameters
,
126 _In_ ULONG ValidResponseOptions
,
127 _Out_ PULONG Response
140 _In_ ULONG AtomNameLength
,
141 _Inout_ PRTL_ATOM Atom
148 _In_ HANDLE TimerHandle
,
149 _Out_opt_ PBOOLEAN CurrentState
156 _In_ HANDLE EventHandle
159 _IRQL_requires_max_(PASSIVE_LEVEL
)
164 _Out_ PHANDLE EventHandle
,
165 _In_ ACCESS_MASK DesiredAccess
,
166 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
167 _In_ EVENT_TYPE EventType
,
168 _In_ BOOLEAN InitialState
175 _Out_ PHANDLE EventPairHandle
,
176 _In_ ACCESS_MASK DesiredAccess
,
177 _In_ POBJECT_ATTRIBUTES ObjectAttributes
180 _IRQL_requires_max_(PASSIVE_LEVEL
)
185 _Out_ PHANDLE OutHandle
,
186 _In_ ACCESS_MASK AccessMask
,
187 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
195 _Out_ PHANDLE MutantHandle
,
196 _In_ ACCESS_MASK DesiredAccess
,
197 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
198 _In_ BOOLEAN InitialOwner
205 _Out_ PHANDLE SemaphoreHandle
,
206 _In_ ACCESS_MASK DesiredAccess
,
207 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
208 _In_ LONG InitialCount
,
209 _In_ LONG MaximumCount
216 _Out_ PHANDLE TimerHandle
,
217 _In_ ACCESS_MASK DesiredAccess
,
218 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
219 _In_ TIMER_TYPE TimerType
233 _In_ PUNICODE_STRING DisplayString
239 NtEnumerateSystemEnvironmentValuesEx(
240 _In_ ULONG InformationClass
,
242 _In_ ULONG BufferLength
250 _In_ ULONG AtomNameLength
,
251 _Out_opt_ PRTL_ATOM Atom
258 _Out_ PHANDLE EventHandle
,
259 _In_ ACCESS_MASK DesiredAccess
,
260 _In_ POBJECT_ATTRIBUTES ObjectAttributes
263 _IRQL_requires_max_(PASSIVE_LEVEL
)
268 _Out_ PHANDLE OutHandle
,
269 _In_ ACCESS_MASK AccessMask
,
270 _In_ POBJECT_ATTRIBUTES ObjectAttributes
277 _Out_ PHANDLE EventPairHandle
,
278 _In_ ACCESS_MASK DesiredAccess
,
279 _In_ POBJECT_ATTRIBUTES ObjectAttributes
286 _Out_ PHANDLE MutantHandle
,
287 _In_ ACCESS_MASK DesiredAccess
,
288 _In_ POBJECT_ATTRIBUTES ObjectAttributes
295 _Out_ PHANDLE SemaphoreHandle
,
296 _In_ ACCESS_MASK DesiredAcces
,
297 _In_ POBJECT_ATTRIBUTES ObjectAttributes
304 _Out_ PHANDLE TimerHandle
,
305 _In_ ACCESS_MASK DesiredAccess
,
306 _In_ POBJECT_ATTRIBUTES ObjectAttributes
313 _In_ HANDLE EventHandle
,
314 _In_opt_ PLONG PulseCount
320 NtQueryDefaultLocale(
321 _In_ BOOLEAN UserProfile
,
322 _Out_ PLCID DefaultLocaleId
328 NtQueryDefaultUILanguage(
336 _In_ HANDLE EventHandle
,
337 _In_ EVENT_INFORMATION_CLASS EventInformationClass
,
338 _Out_ PVOID EventInformation
,
339 _In_ ULONG EventInformationLength
,
340 _Out_ PULONG ReturnLength
346 NtQueryInformationAtom(
348 _In_ ATOM_INFORMATION_CLASS AtomInformationClass
,
349 _Out_ PVOID AtomInformation
,
350 _In_ ULONG AtomInformationLength
,
351 _Out_opt_ PULONG ReturnLength
357 NtQueryInstallUILanguage(
365 _In_ HANDLE MutantHandle
,
366 _In_ MUTANT_INFORMATION_CLASS MutantInformationClass
,
367 _Out_ PVOID MutantInformation
,
369 _Out_ PULONG ResultLength
376 _In_ HANDLE SemaphoreHandle
,
377 _In_ SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
378 _Out_ PVOID SemaphoreInformation
,
380 _Out_ PULONG ReturnLength
386 NtQuerySystemEnvironmentValue(
387 _In_ PUNICODE_STRING Name
,
396 NtQuerySystemEnvironmentValueEx(
397 _In_ PUNICODE_STRING VariableName
,
398 _In_ LPGUID VendorGuid
,
400 _Inout_ PULONG ReturnLength
,
401 _Inout_ PULONG Attributes
408 NtQuerySystemInformation(
409 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
410 _Out_ PVOID SystemInformation
,
411 _In_ ULONG InformationLength
,
412 _Out_opt_ PULONG ResultLength
419 _In_ HANDLE TimerHandle
,
420 _In_ TIMER_INFORMATION_CLASS TimerInformationClass
,
421 _Out_ PVOID TimerInformation
,
423 _Out_ PULONG ResultLength
430 _In_ NTSTATUS ErrorStatus
,
431 _In_ ULONG NumberOfParameters
,
432 _In_ ULONG UnicodeStringParameterMask
,
433 _In_ PULONG_PTR Parameters
,
434 _In_ ULONG ValidResponseOptions
,
435 _Out_ PULONG Response
442 _In_ HANDLE MutantHandle
,
443 _In_opt_ PLONG ReleaseCount
446 _IRQL_requires_max_(PASSIVE_LEVEL
)
451 _In_opt_ HANDLE EventHandle
,
453 _In_ BOOLEAN Alertable
,
454 _In_opt_ PLARGE_INTEGER Timeout
461 _In_ HANDLE SemaphoreHandle
,
462 _In_ LONG ReleaseCount
,
463 _Out_opt_ PLONG PreviousCount
470 _In_ HANDLE EventHandle
,
471 _Out_opt_ PLONG NumberOfWaitingThreads
478 _In_ BOOLEAN UserProfile
,
479 _In_ LCID DefaultLocaleId
485 NtSetDefaultUILanguage(
492 NtSetDefaultHardErrorPort(
493 _In_ HANDLE PortHandle
500 _In_ HANDLE EventHandle
,
501 _Out_opt_ PLONG PreviousState
507 NtSetEventBoostPriority(
508 _In_ HANDLE EventHandle
515 _In_ HANDLE EventPairHandle
521 NtSetHighWaitLowEventPair(
522 _In_ HANDLE EventPairHandle
529 _In_ HANDLE EventPair
535 NtSetLowWaitHighEventPair(
536 _In_ HANDLE EventPair
542 NtSetSystemEnvironmentValue(
543 _In_ PUNICODE_STRING VariableName
,
544 _In_ PUNICODE_STRING Value
550 NtSetSystemEnvironmentValueEx(
551 _In_ PUNICODE_STRING VariableName
,
552 _In_ LPGUID VendorGuid
558 NtSetSystemInformation(
559 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
560 _In_ PVOID SystemInformation
,
561 _In_ ULONG SystemInformationLength
568 _In_ HANDLE TimerHandle
,
569 _In_ PLARGE_INTEGER DueTime
,
570 _In_ PTIMER_APC_ROUTINE TimerApcRoutine
,
571 _In_ PVOID TimerContext
,
572 _In_ BOOLEAN WakeTimer
,
573 _In_opt_ LONG Period
,
574 _Out_opt_ PBOOLEAN PreviousState
588 _In_ SHUTDOWN_ACTION Action
591 _IRQL_requires_max_(PASSIVE_LEVEL
)
596 _In_opt_ HANDLE EventHandle
,
598 _In_ BOOLEAN Alertable
,
599 _In_opt_ PLARGE_INTEGER Timeout
606 _In_ HANDLE EventPairHandle
613 _In_ HANDLE EventPairHandle
620 _In_ ULONG TraceHandle
,
622 _In_ ULONG TraceHeaderLength
,
623 _In_ PEVENT_TRACE_HEADER TraceHeader
631 _In_ ULONG AtomNameLength
,
632 _Inout_ PRTL_ATOM Atom
635 #ifdef NTOS_MODE_USER
640 _In_ HANDLE TimerHandle
,
641 _Out_opt_ PBOOLEAN CurrentState
649 _In_ HANDLE EventHandle
652 _IRQL_requires_max_(PASSIVE_LEVEL
)
657 _Out_ PHANDLE EventHandle
,
658 _In_ ACCESS_MASK DesiredAccess
,
659 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
660 _In_ EVENT_TYPE EventType
,
661 _In_ BOOLEAN InitialState
668 _Out_ PHANDLE EventPairHandle
,
669 _In_ ACCESS_MASK DesiredAccess
,
670 _In_ POBJECT_ATTRIBUTES ObjectAttributes
677 _Out_ PHANDLE MutantHandle
,
678 _In_ ACCESS_MASK DesiredAccess
,
679 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
680 _In_ BOOLEAN InitialOwner
687 _Out_ PHANDLE SemaphoreHandle
,
688 _In_ ACCESS_MASK DesiredAccess
,
689 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
690 _In_ LONG InitialCount
,
691 _In_ LONG MaximumCount
694 #ifdef NTOS_MODE_USER
699 _Out_ PHANDLE TimerHandle
,
700 _In_ ACCESS_MASK DesiredAccess
,
701 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
702 _In_ TIMER_TYPE TimerType
717 _In_ PUNICODE_STRING DisplayString
725 _In_ ULONG AtomNameLength
,
726 _Out_opt_ PRTL_ATOM Atom
733 _Out_ PHANDLE EventHandle
,
734 _In_ ACCESS_MASK DesiredAccess
,
735 _In_ POBJECT_ATTRIBUTES ObjectAttributes
742 _Out_ PHANDLE EventPairHandle
,
743 _In_ ACCESS_MASK DesiredAccess
,
744 _In_ POBJECT_ATTRIBUTES ObjectAttributes
751 _Out_ PHANDLE MutantHandle
,
752 _In_ ACCESS_MASK DesiredAccess
,
753 _In_ POBJECT_ATTRIBUTES ObjectAttributes
760 _Out_ PHANDLE SemaphoreHandle
,
761 _In_ ACCESS_MASK DesiredAcces
,
762 _In_ POBJECT_ATTRIBUTES ObjectAttributes
765 #ifdef NTOS_MODE_USER
770 _Out_ PHANDLE TimerHandle
,
771 _In_ ACCESS_MASK DesiredAccess
,
772 _In_ POBJECT_ATTRIBUTES ObjectAttributes
780 _In_ HANDLE EventHandle
,
781 _In_opt_ PLONG PulseCount
787 ZwQueryDefaultLocale(
788 _In_ BOOLEAN UserProfile
,
789 _Out_ PLCID DefaultLocaleId
795 ZwQueryDefaultUILanguage(
803 _In_ HANDLE EventHandle
,
804 _In_ EVENT_INFORMATION_CLASS EventInformationClass
,
805 _Out_ PVOID EventInformation
,
806 _In_ ULONG EventInformationLength
,
807 _Out_ PULONG ReturnLength
813 ZwQueryInformationAtom(
815 _In_ ATOM_INFORMATION_CLASS AtomInformationClass
,
816 _Out_ PVOID AtomInformation
,
817 _In_ ULONG AtomInformationLength
,
818 _Out_opt_ PULONG ReturnLength
824 ZwQueryInstallUILanguage(
832 _In_ HANDLE MutantHandle
,
833 _In_ MUTANT_INFORMATION_CLASS MutantInformationClass
,
834 _Out_ PVOID MutantInformation
,
836 _Out_ PULONG ResultLength
843 _In_ HANDLE SemaphoreHandle
,
844 _In_ SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
845 _Out_ PVOID SemaphoreInformation
,
847 _Out_ PULONG ReturnLength
853 ZwQuerySystemEnvironmentValue(
854 _In_ PUNICODE_STRING Name
,
857 _Out_ PULONG ReturnLength
863 ZwQuerySystemInformation(
864 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
865 _Out_ PVOID SystemInformation
,
867 _Out_opt_ PSIZE_T ResultLength
874 _In_ HANDLE TimerHandle
,
875 _In_ TIMER_INFORMATION_CLASS TimerInformationClass
,
876 _Out_ PVOID TimerInformation
,
878 _Out_ PULONG ResultLength
885 _In_ NTSTATUS ErrorStatus
,
886 _In_ ULONG NumberOfParameters
,
887 _In_ ULONG UnicodeStringParameterMask
,
888 _In_ PULONG_PTR Parameters
,
889 _In_ ULONG ValidResponseOptions
,
890 _Out_ PULONG Response
897 _In_ HANDLE MutantHandle
,
898 _In_opt_ PLONG ReleaseCount
905 _In_ HANDLE SemaphoreHandle
,
906 _In_ LONG ReleaseCount
,
907 _Out_opt_ PLONG PreviousCount
914 _In_ HANDLE EventHandle
,
915 _Out_opt_ PLONG NumberOfWaitingThreads
922 _In_ BOOLEAN UserProfile
,
923 _In_ LCID DefaultLocaleId
929 ZwSetDefaultUILanguage(
936 ZwSetDefaultHardErrorPort(
937 _In_ HANDLE PortHandle
944 _In_ HANDLE EventHandle
,
945 _Out_opt_ PLONG PreviousState
952 _In_ HANDLE EventPairHandle
958 ZwSetHighWaitLowEventPair(
959 _In_ HANDLE EventPairHandle
966 _In_ HANDLE EventPair
972 ZwSetLowWaitHighEventPair(
973 _In_ HANDLE EventPair
979 ZwSetSystemEnvironmentValue(
980 _In_ PUNICODE_STRING VariableName
,
981 _In_ PUNICODE_STRING Value
987 ZwSetSystemInformation(
988 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
989 _In_ PVOID SystemInformation
,
990 _In_ SIZE_T SystemInformationLength
993 #ifdef NTOS_MODE_USER
998 _In_ HANDLE TimerHandle
,
999 _In_ PLARGE_INTEGER DueTime
,
1000 _In_ PTIMER_APC_ROUTINE TimerApcRoutine
,
1001 _In_ PVOID TimerContext
,
1002 _In_ BOOLEAN WakeTimer
,
1003 _In_opt_ LONG Period
,
1004 _Out_opt_ PBOOLEAN PreviousState
1012 _In_ PUCHAR UuidSeed
1019 _In_ SHUTDOWN_ACTION Action
1025 ZwWaitHighEventPair(
1026 _In_ HANDLE EventPairHandle
1033 _In_ HANDLE EventPairHandle
1040 _In_ ULONG TraceHandle
,
1042 _In_ ULONG TraceHeaderLength
,
1043 _In_ PEVENT_TRACE_HEADER TraceHeader