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 typedef struct _EVENT_TRACE_HEADER
*PEVENT_TRACE_HEADER
;
34 #ifndef NTOS_MODE_USER
36 // Fast Mutex functions
40 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(
46 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
55 ExfAcquirePushLockExclusive(
56 PEX_PUSH_LOCK PushLock
61 ExfAcquirePushLockShared(
62 PEX_PUSH_LOCK PushLock
68 PEX_PUSH_LOCK PushLock
73 ExfReleasePushLockExclusive(
74 PEX_PUSH_LOCK PushLock
79 ExfReleasePushLockShared(
80 PEX_PUSH_LOCK PushLock
86 PEX_PUSH_LOCK PushLock
92 PEX_PUSH_LOCK PushLock
,
93 PVOID CurrentWaitBlock
102 ExTryToAcquireResourceExclusiveLite(
103 IN PERESOURCE Resource
116 IN ULONG AtomNameLength
,
117 IN OUT PRTL_ATOM Atom
124 IN HANDLE TimerHandle
,
125 OUT PBOOLEAN CurrentState OPTIONAL
132 IN HANDLE EventHandle
139 OUT PHANDLE EventHandle
,
140 IN ACCESS_MASK DesiredAccess
,
141 IN POBJECT_ATTRIBUTES ObjectAttributes
,
142 IN EVENT_TYPE EventType
,
143 IN BOOLEAN InitialState
150 OUT PHANDLE EventPairHandle
,
151 IN ACCESS_MASK DesiredAccess
,
152 IN POBJECT_ATTRIBUTES ObjectAttributes
159 OUT PHANDLE KeyedEventHandle
,
160 IN ACCESS_MASK DesiredAccess
,
161 IN POBJECT_ATTRIBUTES ObjectAttributes
,
169 OUT PHANDLE MutantHandle
,
170 IN ACCESS_MASK DesiredAccess
,
171 IN POBJECT_ATTRIBUTES ObjectAttributes
,
172 IN BOOLEAN InitialOwner
179 OUT PHANDLE SemaphoreHandle
,
180 IN ACCESS_MASK DesiredAccess
,
181 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
182 IN LONG InitialCount
,
190 OUT PHANDLE TimerHandle
,
191 IN ACCESS_MASK DesiredAccess
,
192 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
193 IN TIMER_TYPE TimerType
207 IN PUNICODE_STRING DisplayString
213 NtEnumerateSystemEnvironmentValuesEx(
214 IN ULONG InformationClass
,
216 IN ULONG BufferLength
224 IN ULONG AtomNameLength
,
225 OUT PRTL_ATOM Atom OPTIONAL
232 OUT PHANDLE EventHandle
,
233 IN ACCESS_MASK DesiredAccess
,
234 IN POBJECT_ATTRIBUTES ObjectAttributes
241 OUT PHANDLE EventHandle
,
242 IN ACCESS_MASK DesiredAccess
,
243 IN POBJECT_ATTRIBUTES ObjectAttributes
250 OUT PHANDLE EventPairHandle
,
251 IN ACCESS_MASK DesiredAccess
,
252 IN POBJECT_ATTRIBUTES ObjectAttributes
259 OUT PHANDLE MutantHandle
,
260 IN ACCESS_MASK DesiredAccess
,
261 IN POBJECT_ATTRIBUTES ObjectAttributes
268 OUT PHANDLE SemaphoreHandle
,
269 IN ACCESS_MASK DesiredAcces
,
270 IN POBJECT_ATTRIBUTES ObjectAttributes
277 OUT PHANDLE TimerHandle
,
278 IN ACCESS_MASK DesiredAccess
,
279 IN POBJECT_ATTRIBUTES ObjectAttributes
286 IN HANDLE EventHandle
,
287 IN PLONG PulseCount OPTIONAL
293 NtQueryDefaultLocale(
294 IN BOOLEAN UserProfile
,
295 OUT PLCID DefaultLocaleId
301 NtQueryDefaultUILanguage(
309 IN HANDLE EventHandle
,
310 IN EVENT_INFORMATION_CLASS EventInformationClass
,
311 OUT PVOID EventInformation
,
312 IN ULONG EventInformationLength
,
313 OUT PULONG ReturnLength
319 NtQueryInformationAtom(
321 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
322 OUT PVOID AtomInformation
,
323 IN ULONG AtomInformationLength
,
324 OUT PULONG ReturnLength OPTIONAL
330 NtQueryInstallUILanguage(
338 IN HANDLE MutantHandle
,
339 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
340 OUT PVOID MutantInformation
,
342 OUT PULONG ResultLength
349 IN HANDLE SemaphoreHandle
,
350 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
351 OUT PVOID SemaphoreInformation
,
353 OUT PULONG ReturnLength
359 NtQuerySystemEnvironmentValue(
360 IN PUNICODE_STRING Name
,
369 NtQuerySystemEnvironmentValueEx(
370 IN PUNICODE_STRING VariableName
,
377 NtQuerySystemInformation(
378 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
379 OUT PVOID SystemInformation
,
381 OUT PSIZE_T ResultLength
388 IN HANDLE TimerHandle
,
389 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
390 OUT PVOID TimerInformation
,
392 OUT PULONG ResultLength
399 IN NTSTATUS ErrorStatus
,
400 IN ULONG NumberOfParameters
,
401 IN ULONG UnicodeStringParameterMask
,
402 IN PULONG_PTR Parameters
,
403 IN ULONG ValidResponseOptions
,
411 IN HANDLE MutantHandle
,
412 IN PLONG ReleaseCount OPTIONAL
419 IN HANDLE EventHandle
,
421 IN BOOLEAN Alertable
,
422 IN PLARGE_INTEGER Timeout OPTIONAL
429 IN HANDLE SemaphoreHandle
,
430 IN LONG ReleaseCount
,
431 OUT PLONG PreviousCount
438 IN HANDLE EventHandle
,
439 OUT PLONG NumberOfWaitingThreads OPTIONAL
446 IN BOOLEAN UserProfile
,
447 IN LCID DefaultLocaleId
453 NtSetDefaultUILanguage(
460 NtSetDefaultHardErrorPort(
468 IN HANDLE EventHandle
,
469 OUT PLONG PreviousState OPTIONAL
475 NtSetEventBoostPriority(
476 IN HANDLE EventHandle
483 IN HANDLE EventPairHandle
489 NtSetHighWaitLowEventPair(
490 IN HANDLE EventPairHandle
503 NtSetLowWaitHighEventPair(
510 NtSetSystemEnvironmentValue(
511 IN PUNICODE_STRING VariableName
,
512 IN PUNICODE_STRING Value
518 NtSetSystemEnvironmentValueEx(
519 IN PUNICODE_STRING VariableName
,
526 NtSetSystemInformation(
527 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
528 IN PVOID SystemInformation
,
529 IN SIZE_T SystemInformationLength
536 IN HANDLE TimerHandle
,
537 IN PLARGE_INTEGER DueTime
,
538 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
539 IN PVOID TimerContext
,
540 IN BOOLEAN WakeTimer
,
541 IN LONG Period OPTIONAL
,
542 OUT PBOOLEAN PreviousState OPTIONAL
556 IN SHUTDOWN_ACTION Action
563 IN HANDLE EventHandle
,
565 IN BOOLEAN Alertable
,
566 IN PLARGE_INTEGER Timeout OPTIONAL
573 IN HANDLE EventPairHandle
580 IN HANDLE EventPairHandle
587 IN ULONG TraceHandle
,
589 IN ULONG TraceHeaderLength
,
590 IN PEVENT_TRACE_HEADER TraceHeader
598 IN ULONG AtomNameLength
,
599 IN OUT PRTL_ATOM Atom
602 #ifdef NTOS_MODE_USER
607 IN HANDLE TimerHandle
,
608 OUT PBOOLEAN CurrentState OPTIONAL
616 IN HANDLE EventHandle
623 OUT PHANDLE EventHandle
,
624 IN ACCESS_MASK DesiredAccess
,
625 IN POBJECT_ATTRIBUTES ObjectAttributes
,
626 IN EVENT_TYPE EventType
,
627 IN BOOLEAN InitialState
634 OUT PHANDLE EventPairHandle
,
635 IN ACCESS_MASK DesiredAccess
,
636 IN POBJECT_ATTRIBUTES ObjectAttributes
643 OUT PHANDLE MutantHandle
,
644 IN ACCESS_MASK DesiredAccess
,
645 IN POBJECT_ATTRIBUTES ObjectAttributes
,
646 IN BOOLEAN InitialOwner
653 OUT PHANDLE SemaphoreHandle
,
654 IN ACCESS_MASK DesiredAccess
,
655 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
656 IN LONG InitialCount
,
660 #ifdef NTOS_MODE_USER
665 OUT PHANDLE TimerHandle
,
666 IN ACCESS_MASK DesiredAccess
,
667 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
668 IN TIMER_TYPE TimerType
683 IN PUNICODE_STRING DisplayString
691 IN ULONG AtomNameLength
,
692 OUT PRTL_ATOM Atom OPTIONAL
699 OUT PHANDLE EventHandle
,
700 IN ACCESS_MASK DesiredAccess
,
701 IN POBJECT_ATTRIBUTES ObjectAttributes
708 OUT PHANDLE EventPairHandle
,
709 IN ACCESS_MASK DesiredAccess
,
710 IN POBJECT_ATTRIBUTES ObjectAttributes
717 OUT PHANDLE MutantHandle
,
718 IN ACCESS_MASK DesiredAccess
,
719 IN POBJECT_ATTRIBUTES ObjectAttributes
726 OUT PHANDLE SemaphoreHandle
,
727 IN ACCESS_MASK DesiredAcces
,
728 IN POBJECT_ATTRIBUTES ObjectAttributes
731 #ifdef NTOS_MODE_USER
736 OUT PHANDLE TimerHandle
,
737 IN ACCESS_MASK DesiredAccess
,
738 IN POBJECT_ATTRIBUTES ObjectAttributes
746 IN HANDLE EventHandle
,
747 IN PLONG PulseCount OPTIONAL
753 ZwQueryDefaultLocale(
754 IN BOOLEAN UserProfile
,
755 OUT PLCID DefaultLocaleId
761 ZwQueryDefaultUILanguage(
769 IN HANDLE EventHandle
,
770 IN EVENT_INFORMATION_CLASS EventInformationClass
,
771 OUT PVOID EventInformation
,
772 IN ULONG EventInformationLength
,
773 OUT PULONG ReturnLength
779 ZwQueryInformationAtom(
781 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
782 OUT PVOID AtomInformation
,
783 IN ULONG AtomInformationLength
,
784 OUT PULONG ReturnLength OPTIONAL
790 ZwQueryInstallUILanguage(
798 IN HANDLE MutantHandle
,
799 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
800 OUT PVOID MutantInformation
,
802 OUT PULONG ResultLength
809 IN HANDLE SemaphoreHandle
,
810 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
811 OUT PVOID SemaphoreInformation
,
813 OUT PULONG ReturnLength
819 ZwQuerySystemEnvironmentValue(
820 IN PUNICODE_STRING Name
,
829 ZwQuerySystemInformation(
830 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
831 OUT PVOID SystemInformation
,
833 OUT PSIZE_T ResultLength
840 IN HANDLE TimerHandle
,
841 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
842 OUT PVOID TimerInformation
,
844 OUT PULONG ResultLength
851 IN NTSTATUS ErrorStatus
,
852 IN ULONG NumberOfParameters
,
853 IN ULONG UnicodeStringParameterMask
,
854 IN PULONG_PTR Parameters
,
855 IN ULONG ValidResponseOptions
,
863 IN HANDLE MutantHandle
,
864 IN PLONG ReleaseCount OPTIONAL
871 IN HANDLE SemaphoreHandle
,
872 IN LONG ReleaseCount
,
873 OUT PLONG PreviousCount
880 IN HANDLE EventHandle
,
881 OUT PLONG NumberOfWaitingThreads OPTIONAL
888 IN BOOLEAN UserProfile
,
889 IN LCID DefaultLocaleId
895 ZwSetDefaultUILanguage(
902 ZwSetDefaultHardErrorPort(
910 IN HANDLE EventHandle
,
911 OUT PLONG PreviousState OPTIONAL
918 IN HANDLE EventPairHandle
924 ZwSetHighWaitLowEventPair(
925 IN HANDLE EventPairHandle
938 ZwSetLowWaitHighEventPair(
945 ZwSetSystemEnvironmentValue(
946 IN PUNICODE_STRING VariableName
,
947 IN PUNICODE_STRING Value
953 ZwSetSystemInformation(
954 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
955 IN PVOID SystemInformation
,
956 IN SIZE_T SystemInformationLength
959 #ifdef NTOS_MODE_USER
964 IN HANDLE TimerHandle
,
965 IN PLARGE_INTEGER DueTime
,
966 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
967 IN PVOID TimerContext
,
968 IN BOOLEAN WakeTimer
,
969 IN LONG Period OPTIONAL
,
970 OUT PBOOLEAN PreviousState OPTIONAL
985 IN SHUTDOWN_ACTION Action
992 IN HANDLE EventPairHandle
999 IN HANDLE EventPairHandle
1006 IN ULONG TraceHandle
,
1008 IN ULONG TraceHeaderLength
,
1009 IN PEVENT_TRACE_HEADER TraceHeader