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
,
554 _Inout_ PULONG ReturnLength
,
555 _Inout_ PULONG Attributes
561 NtSetSystemInformation(
562 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
563 _In_ PVOID SystemInformation
,
564 _In_ ULONG SystemInformationLength
571 _In_ HANDLE TimerHandle
,
572 _In_ PLARGE_INTEGER DueTime
,
573 _In_ PTIMER_APC_ROUTINE TimerApcRoutine
,
574 _In_ PVOID TimerContext
,
575 _In_ BOOLEAN WakeTimer
,
576 _In_opt_ LONG Period
,
577 _Out_opt_ PBOOLEAN PreviousState
591 _In_ SHUTDOWN_ACTION Action
594 _IRQL_requires_max_(PASSIVE_LEVEL
)
599 _In_opt_ HANDLE EventHandle
,
601 _In_ BOOLEAN Alertable
,
602 _In_opt_ PLARGE_INTEGER Timeout
609 _In_ HANDLE EventPairHandle
616 _In_ HANDLE EventPairHandle
623 _In_ ULONG TraceHandle
,
625 _In_ ULONG TraceHeaderLength
,
626 _In_ PEVENT_TRACE_HEADER TraceHeader
634 _In_ ULONG AtomNameLength
,
635 _Inout_ PRTL_ATOM Atom
638 #ifdef NTOS_MODE_USER
643 _In_ HANDLE TimerHandle
,
644 _Out_opt_ PBOOLEAN CurrentState
652 _In_ HANDLE EventHandle
655 _IRQL_requires_max_(PASSIVE_LEVEL
)
660 _Out_ PHANDLE EventHandle
,
661 _In_ ACCESS_MASK DesiredAccess
,
662 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
663 _In_ EVENT_TYPE EventType
,
664 _In_ BOOLEAN InitialState
671 _Out_ PHANDLE EventPairHandle
,
672 _In_ ACCESS_MASK DesiredAccess
,
673 _In_ POBJECT_ATTRIBUTES ObjectAttributes
676 _IRQL_requires_max_(PASSIVE_LEVEL
)
681 _Out_ PHANDLE OutHandle
,
682 _In_ ACCESS_MASK AccessMask
,
683 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
691 _Out_ PHANDLE MutantHandle
,
692 _In_ ACCESS_MASK DesiredAccess
,
693 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
694 _In_ BOOLEAN InitialOwner
701 _Out_ PHANDLE SemaphoreHandle
,
702 _In_ ACCESS_MASK DesiredAccess
,
703 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
704 _In_ LONG InitialCount
,
705 _In_ LONG MaximumCount
708 #ifdef NTOS_MODE_USER
713 _Out_ PHANDLE TimerHandle
,
714 _In_ ACCESS_MASK DesiredAccess
,
715 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
716 _In_ TIMER_TYPE TimerType
731 _In_ PUNICODE_STRING DisplayString
739 _In_ ULONG AtomNameLength
,
740 _Out_opt_ PRTL_ATOM Atom
747 _Out_ PHANDLE EventHandle
,
748 _In_ ACCESS_MASK DesiredAccess
,
749 _In_ POBJECT_ATTRIBUTES ObjectAttributes
756 _Out_ PHANDLE EventPairHandle
,
757 _In_ ACCESS_MASK DesiredAccess
,
758 _In_ POBJECT_ATTRIBUTES ObjectAttributes
765 _Out_ PHANDLE MutantHandle
,
766 _In_ ACCESS_MASK DesiredAccess
,
767 _In_ POBJECT_ATTRIBUTES ObjectAttributes
774 _Out_ PHANDLE SemaphoreHandle
,
775 _In_ ACCESS_MASK DesiredAcces
,
776 _In_ POBJECT_ATTRIBUTES ObjectAttributes
779 #ifdef NTOS_MODE_USER
784 _Out_ PHANDLE TimerHandle
,
785 _In_ ACCESS_MASK DesiredAccess
,
786 _In_ POBJECT_ATTRIBUTES ObjectAttributes
794 _In_ HANDLE EventHandle
,
795 _In_opt_ PLONG PulseCount
801 ZwQueryDefaultLocale(
802 _In_ BOOLEAN UserProfile
,
803 _Out_ PLCID DefaultLocaleId
809 ZwQueryDefaultUILanguage(
817 _In_ HANDLE EventHandle
,
818 _In_ EVENT_INFORMATION_CLASS EventInformationClass
,
819 _Out_ PVOID EventInformation
,
820 _In_ ULONG EventInformationLength
,
821 _Out_ PULONG ReturnLength
827 ZwQueryInformationAtom(
829 _In_ ATOM_INFORMATION_CLASS AtomInformationClass
,
830 _Out_ PVOID AtomInformation
,
831 _In_ ULONG AtomInformationLength
,
832 _Out_opt_ PULONG ReturnLength
838 ZwQueryInstallUILanguage(
846 _In_ HANDLE MutantHandle
,
847 _In_ MUTANT_INFORMATION_CLASS MutantInformationClass
,
848 _Out_ PVOID MutantInformation
,
850 _Out_ PULONG ResultLength
857 _In_ HANDLE SemaphoreHandle
,
858 _In_ SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
859 _Out_ PVOID SemaphoreInformation
,
861 _Out_ PULONG ReturnLength
867 ZwQuerySystemEnvironmentValue(
868 _In_ PUNICODE_STRING Name
,
871 _Out_ PULONG ReturnLength
877 ZwQuerySystemInformation(
878 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
879 _Out_ PVOID SystemInformation
,
881 _Out_opt_ PSIZE_T ResultLength
888 _In_ HANDLE TimerHandle
,
889 _In_ TIMER_INFORMATION_CLASS TimerInformationClass
,
890 _Out_ PVOID TimerInformation
,
892 _Out_ PULONG ResultLength
899 _In_ NTSTATUS ErrorStatus
,
900 _In_ ULONG NumberOfParameters
,
901 _In_ ULONG UnicodeStringParameterMask
,
902 _In_ PULONG_PTR Parameters
,
903 _In_ ULONG ValidResponseOptions
,
904 _Out_ PULONG Response
911 _In_ HANDLE MutantHandle
,
912 _In_opt_ PLONG ReleaseCount
919 _In_ HANDLE SemaphoreHandle
,
920 _In_ LONG ReleaseCount
,
921 _Out_opt_ PLONG PreviousCount
928 _In_ HANDLE EventHandle
,
929 _Out_opt_ PLONG NumberOfWaitingThreads
936 _In_ BOOLEAN UserProfile
,
937 _In_ LCID DefaultLocaleId
943 ZwSetDefaultUILanguage(
950 ZwSetDefaultHardErrorPort(
951 _In_ HANDLE PortHandle
958 _In_ HANDLE EventHandle
,
959 _Out_opt_ PLONG PreviousState
966 _In_ HANDLE EventPairHandle
972 ZwSetHighWaitLowEventPair(
973 _In_ HANDLE EventPairHandle
980 _In_ HANDLE EventPair
986 ZwSetLowWaitHighEventPair(
987 _In_ HANDLE EventPair
993 ZwSetSystemEnvironmentValue(
994 _In_ PUNICODE_STRING VariableName
,
995 _In_ PUNICODE_STRING Value
1001 ZwSetSystemInformation(
1002 _In_ SYSTEM_INFORMATION_CLASS SystemInformationClass
,
1003 _In_ PVOID SystemInformation
,
1004 _In_ SIZE_T SystemInformationLength
1007 #ifdef NTOS_MODE_USER
1012 _In_ HANDLE TimerHandle
,
1013 _In_ PLARGE_INTEGER DueTime
,
1014 _In_ PTIMER_APC_ROUTINE TimerApcRoutine
,
1015 _In_ PVOID TimerContext
,
1016 _In_ BOOLEAN WakeTimer
,
1017 _In_opt_ LONG Period
,
1018 _Out_opt_ PBOOLEAN PreviousState
1026 _In_ PUCHAR UuidSeed
1033 _In_ SHUTDOWN_ACTION Action
1039 ZwWaitHighEventPair(
1040 _In_ HANDLE EventPairHandle
1047 _In_ HANDLE EventPairHandle
1054 _In_ ULONG TraceHandle
,
1056 _In_ ULONG TraceHeaderLength
,
1057 _In_ PEVENT_TRACE_HEADER TraceHeader