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(
53 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
62 ExfAcquirePushLockExclusive(
63 PEX_PUSH_LOCK PushLock
68 ExfAcquirePushLockShared(
69 PEX_PUSH_LOCK PushLock
75 PEX_PUSH_LOCK PushLock
80 ExfReleasePushLockExclusive(
81 PEX_PUSH_LOCK PushLock
86 ExfReleasePushLockShared(
87 PEX_PUSH_LOCK PushLock
93 PEX_PUSH_LOCK PushLock
99 PEX_PUSH_LOCK PushLock
,
100 PVOID CurrentWaitBlock
104 // Handle Table Functions
110 IN PHANDLE_TABLE HandleTable
,
111 IN PEX_ENUM_HANDLE_CALLBACK EnumHandleProcedure
,
112 IN OUT PVOID Context
,
113 OUT PHANDLE Handle OPTIONAL
126 IN ULONG AtomNameLength
,
127 IN OUT PRTL_ATOM Atom
134 IN HANDLE TimerHandle
,
135 OUT PBOOLEAN CurrentState OPTIONAL
142 IN HANDLE EventHandle
149 OUT PHANDLE EventHandle
,
150 IN ACCESS_MASK DesiredAccess
,
151 IN POBJECT_ATTRIBUTES ObjectAttributes
,
152 IN EVENT_TYPE EventType
,
153 IN BOOLEAN InitialState
160 OUT PHANDLE EventPairHandle
,
161 IN ACCESS_MASK DesiredAccess
,
162 IN POBJECT_ATTRIBUTES ObjectAttributes
169 OUT PHANDLE KeyedEventHandle
,
170 IN ACCESS_MASK DesiredAccess
,
171 IN POBJECT_ATTRIBUTES ObjectAttributes
,
179 OUT PHANDLE MutantHandle
,
180 IN ACCESS_MASK DesiredAccess
,
181 IN POBJECT_ATTRIBUTES ObjectAttributes
,
182 IN BOOLEAN InitialOwner
189 OUT PHANDLE SemaphoreHandle
,
190 IN ACCESS_MASK DesiredAccess
,
191 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
192 IN LONG InitialCount
,
200 OUT PHANDLE TimerHandle
,
201 IN ACCESS_MASK DesiredAccess
,
202 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
203 IN TIMER_TYPE TimerType
217 IN PUNICODE_STRING DisplayString
223 NtEnumerateSystemEnvironmentValuesEx(
224 IN ULONG InformationClass
,
226 IN ULONG BufferLength
234 IN ULONG AtomNameLength
,
235 OUT PRTL_ATOM Atom OPTIONAL
242 OUT PHANDLE EventHandle
,
243 IN ACCESS_MASK DesiredAccess
,
244 IN POBJECT_ATTRIBUTES ObjectAttributes
251 OUT PHANDLE EventHandle
,
252 IN ACCESS_MASK DesiredAccess
,
253 IN POBJECT_ATTRIBUTES ObjectAttributes
260 OUT PHANDLE EventPairHandle
,
261 IN ACCESS_MASK DesiredAccess
,
262 IN POBJECT_ATTRIBUTES ObjectAttributes
269 OUT PHANDLE MutantHandle
,
270 IN ACCESS_MASK DesiredAccess
,
271 IN POBJECT_ATTRIBUTES ObjectAttributes
278 OUT PHANDLE SemaphoreHandle
,
279 IN ACCESS_MASK DesiredAcces
,
280 IN POBJECT_ATTRIBUTES ObjectAttributes
287 OUT PHANDLE TimerHandle
,
288 IN ACCESS_MASK DesiredAccess
,
289 IN POBJECT_ATTRIBUTES ObjectAttributes
296 IN HANDLE EventHandle
,
297 IN PLONG PulseCount OPTIONAL
303 NtQueryDefaultLocale(
304 IN BOOLEAN UserProfile
,
305 OUT PLCID DefaultLocaleId
311 NtQueryDefaultUILanguage(
319 IN HANDLE EventHandle
,
320 IN EVENT_INFORMATION_CLASS EventInformationClass
,
321 OUT PVOID EventInformation
,
322 IN ULONG EventInformationLength
,
323 OUT PULONG ReturnLength
329 NtQueryInformationAtom(
331 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
332 OUT PVOID AtomInformation
,
333 IN ULONG AtomInformationLength
,
334 OUT PULONG ReturnLength OPTIONAL
340 NtQueryInstallUILanguage(
348 IN HANDLE MutantHandle
,
349 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
350 OUT PVOID MutantInformation
,
352 OUT PULONG ResultLength
359 IN HANDLE SemaphoreHandle
,
360 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
361 OUT PVOID SemaphoreInformation
,
363 OUT PULONG ReturnLength
369 NtQuerySystemEnvironmentValue(
370 IN PUNICODE_STRING Name
,
379 NtQuerySystemEnvironmentValueEx(
380 IN PUNICODE_STRING VariableName
,
381 IN LPGUID VendorGuid
,
383 IN OUT PULONG ReturnLength
,
384 IN OUT PULONG Attributes
390 NtQuerySystemInformation(
391 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
392 OUT PVOID SystemInformation
,
394 OUT PULONG ResultLength
401 IN HANDLE TimerHandle
,
402 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
403 OUT PVOID TimerInformation
,
405 OUT PULONG ResultLength
412 IN NTSTATUS ErrorStatus
,
413 IN ULONG NumberOfParameters
,
414 IN ULONG UnicodeStringParameterMask
,
415 IN PULONG_PTR Parameters
,
416 IN ULONG ValidResponseOptions
,
424 IN HANDLE MutantHandle
,
425 IN PLONG ReleaseCount OPTIONAL
432 IN HANDLE EventHandle
,
434 IN BOOLEAN Alertable
,
435 IN PLARGE_INTEGER Timeout OPTIONAL
442 IN HANDLE SemaphoreHandle
,
443 IN LONG ReleaseCount
,
444 OUT PLONG PreviousCount
451 IN HANDLE EventHandle
,
452 OUT PLONG NumberOfWaitingThreads OPTIONAL
459 IN BOOLEAN UserProfile
,
460 IN LCID DefaultLocaleId
466 NtSetDefaultUILanguage(
473 NtSetDefaultHardErrorPort(
481 IN HANDLE EventHandle
,
482 OUT PLONG PreviousState OPTIONAL
488 NtSetEventBoostPriority(
489 IN HANDLE EventHandle
496 IN HANDLE EventPairHandle
502 NtSetHighWaitLowEventPair(
503 IN HANDLE EventPairHandle
516 NtSetLowWaitHighEventPair(
523 NtSetSystemEnvironmentValue(
524 IN PUNICODE_STRING VariableName
,
525 IN PUNICODE_STRING Value
531 NtSetSystemEnvironmentValueEx(
532 IN PUNICODE_STRING VariableName
,
539 NtSetSystemInformation(
540 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
541 IN PVOID SystemInformation
,
542 IN ULONG SystemInformationLength
549 IN HANDLE TimerHandle
,
550 IN PLARGE_INTEGER DueTime
,
551 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
552 IN PVOID TimerContext
,
553 IN BOOLEAN WakeTimer
,
554 IN LONG Period OPTIONAL
,
555 OUT PBOOLEAN PreviousState OPTIONAL
569 IN SHUTDOWN_ACTION Action
576 IN HANDLE EventHandle
,
578 IN BOOLEAN Alertable
,
579 IN PLARGE_INTEGER Timeout OPTIONAL
586 IN HANDLE EventPairHandle
593 IN HANDLE EventPairHandle
600 IN ULONG TraceHandle
,
602 IN ULONG TraceHeaderLength
,
603 IN PEVENT_TRACE_HEADER TraceHeader
611 IN ULONG AtomNameLength
,
612 IN OUT PRTL_ATOM Atom
615 #ifdef NTOS_MODE_USER
620 IN HANDLE TimerHandle
,
621 OUT PBOOLEAN CurrentState OPTIONAL
629 IN HANDLE EventHandle
636 OUT PHANDLE EventHandle
,
637 IN ACCESS_MASK DesiredAccess
,
638 IN POBJECT_ATTRIBUTES ObjectAttributes
,
639 IN EVENT_TYPE EventType
,
640 IN BOOLEAN InitialState
647 OUT PHANDLE EventPairHandle
,
648 IN ACCESS_MASK DesiredAccess
,
649 IN POBJECT_ATTRIBUTES ObjectAttributes
656 OUT PHANDLE MutantHandle
,
657 IN ACCESS_MASK DesiredAccess
,
658 IN POBJECT_ATTRIBUTES ObjectAttributes
,
659 IN BOOLEAN InitialOwner
666 OUT PHANDLE SemaphoreHandle
,
667 IN ACCESS_MASK DesiredAccess
,
668 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
669 IN LONG InitialCount
,
673 #ifdef NTOS_MODE_USER
678 OUT PHANDLE TimerHandle
,
679 IN ACCESS_MASK DesiredAccess
,
680 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
681 IN TIMER_TYPE TimerType
696 IN PUNICODE_STRING DisplayString
704 IN ULONG AtomNameLength
,
705 OUT PRTL_ATOM Atom OPTIONAL
712 OUT PHANDLE EventHandle
,
713 IN ACCESS_MASK DesiredAccess
,
714 IN POBJECT_ATTRIBUTES ObjectAttributes
721 OUT PHANDLE EventPairHandle
,
722 IN ACCESS_MASK DesiredAccess
,
723 IN POBJECT_ATTRIBUTES ObjectAttributes
730 OUT PHANDLE MutantHandle
,
731 IN ACCESS_MASK DesiredAccess
,
732 IN POBJECT_ATTRIBUTES ObjectAttributes
739 OUT PHANDLE SemaphoreHandle
,
740 IN ACCESS_MASK DesiredAcces
,
741 IN POBJECT_ATTRIBUTES ObjectAttributes
744 #ifdef NTOS_MODE_USER
749 OUT PHANDLE TimerHandle
,
750 IN ACCESS_MASK DesiredAccess
,
751 IN POBJECT_ATTRIBUTES ObjectAttributes
759 IN HANDLE EventHandle
,
760 IN PLONG PulseCount OPTIONAL
766 ZwQueryDefaultLocale(
767 IN BOOLEAN UserProfile
,
768 OUT PLCID DefaultLocaleId
774 ZwQueryDefaultUILanguage(
782 IN HANDLE EventHandle
,
783 IN EVENT_INFORMATION_CLASS EventInformationClass
,
784 OUT PVOID EventInformation
,
785 IN ULONG EventInformationLength
,
786 OUT PULONG ReturnLength
792 ZwQueryInformationAtom(
794 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
795 OUT PVOID AtomInformation
,
796 IN ULONG AtomInformationLength
,
797 OUT PULONG ReturnLength OPTIONAL
803 ZwQueryInstallUILanguage(
811 IN HANDLE MutantHandle
,
812 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
813 OUT PVOID MutantInformation
,
815 OUT PULONG ResultLength
822 IN HANDLE SemaphoreHandle
,
823 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
824 OUT PVOID SemaphoreInformation
,
826 OUT PULONG ReturnLength
832 ZwQuerySystemEnvironmentValue(
833 IN PUNICODE_STRING Name
,
842 ZwQuerySystemInformation(
843 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
844 OUT PVOID SystemInformation
,
846 OUT PSIZE_T ResultLength
853 IN HANDLE TimerHandle
,
854 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
855 OUT PVOID TimerInformation
,
857 OUT PULONG ResultLength
864 IN NTSTATUS ErrorStatus
,
865 IN ULONG NumberOfParameters
,
866 IN ULONG UnicodeStringParameterMask
,
867 IN PULONG_PTR Parameters
,
868 IN ULONG ValidResponseOptions
,
876 IN HANDLE MutantHandle
,
877 IN PLONG ReleaseCount OPTIONAL
884 IN HANDLE SemaphoreHandle
,
885 IN LONG ReleaseCount
,
886 OUT PLONG PreviousCount
893 IN HANDLE EventHandle
,
894 OUT PLONG NumberOfWaitingThreads OPTIONAL
901 IN BOOLEAN UserProfile
,
902 IN LCID DefaultLocaleId
908 ZwSetDefaultUILanguage(
915 ZwSetDefaultHardErrorPort(
923 IN HANDLE EventHandle
,
924 OUT PLONG PreviousState OPTIONAL
931 IN HANDLE EventPairHandle
937 ZwSetHighWaitLowEventPair(
938 IN HANDLE EventPairHandle
951 ZwSetLowWaitHighEventPair(
958 ZwSetSystemEnvironmentValue(
959 IN PUNICODE_STRING VariableName
,
960 IN PUNICODE_STRING Value
966 ZwSetSystemInformation(
967 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
968 IN PVOID SystemInformation
,
969 IN SIZE_T SystemInformationLength
972 #ifdef NTOS_MODE_USER
977 IN HANDLE TimerHandle
,
978 IN PLARGE_INTEGER DueTime
,
979 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
980 IN PVOID TimerContext
,
981 IN BOOLEAN WakeTimer
,
982 IN LONG Period OPTIONAL
,
983 OUT PBOOLEAN PreviousState OPTIONAL
998 IN SHUTDOWN_ACTION Action
1004 ZwWaitHighEventPair(
1005 IN HANDLE EventPairHandle
1012 IN HANDLE EventPairHandle
1019 IN ULONG TraceHandle
,
1021 IN ULONG TraceHeaderLength
,
1022 IN PEVENT_TRACE_HEADER TraceHeader