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
,
371 IN LPGUID VendorGuid
,
373 IN OUT PULONG ReturnLength
,
374 IN OUT PULONG Attributes
380 NtQuerySystemInformation(
381 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
382 OUT PVOID SystemInformation
,
384 OUT PSIZE_T ResultLength
391 IN HANDLE TimerHandle
,
392 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
393 OUT PVOID TimerInformation
,
395 OUT PULONG ResultLength
402 IN NTSTATUS ErrorStatus
,
403 IN ULONG NumberOfParameters
,
404 IN ULONG UnicodeStringParameterMask
,
405 IN PULONG_PTR Parameters
,
406 IN ULONG ValidResponseOptions
,
414 IN HANDLE MutantHandle
,
415 IN PLONG ReleaseCount OPTIONAL
422 IN HANDLE EventHandle
,
424 IN BOOLEAN Alertable
,
425 IN PLARGE_INTEGER Timeout OPTIONAL
432 IN HANDLE SemaphoreHandle
,
433 IN LONG ReleaseCount
,
434 OUT PLONG PreviousCount
441 IN HANDLE EventHandle
,
442 OUT PLONG NumberOfWaitingThreads OPTIONAL
449 IN BOOLEAN UserProfile
,
450 IN LCID DefaultLocaleId
456 NtSetDefaultUILanguage(
463 NtSetDefaultHardErrorPort(
471 IN HANDLE EventHandle
,
472 OUT PLONG PreviousState OPTIONAL
478 NtSetEventBoostPriority(
479 IN HANDLE EventHandle
486 IN HANDLE EventPairHandle
492 NtSetHighWaitLowEventPair(
493 IN HANDLE EventPairHandle
506 NtSetLowWaitHighEventPair(
513 NtSetSystemEnvironmentValue(
514 IN PUNICODE_STRING VariableName
,
515 IN PUNICODE_STRING Value
521 NtSetSystemEnvironmentValueEx(
522 IN PUNICODE_STRING VariableName
,
529 NtSetSystemInformation(
530 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
531 IN PVOID SystemInformation
,
532 IN SIZE_T SystemInformationLength
539 IN HANDLE TimerHandle
,
540 IN PLARGE_INTEGER DueTime
,
541 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
542 IN PVOID TimerContext
,
543 IN BOOLEAN WakeTimer
,
544 IN LONG Period OPTIONAL
,
545 OUT PBOOLEAN PreviousState OPTIONAL
559 IN SHUTDOWN_ACTION Action
566 IN HANDLE EventHandle
,
568 IN BOOLEAN Alertable
,
569 IN PLARGE_INTEGER Timeout OPTIONAL
576 IN HANDLE EventPairHandle
583 IN HANDLE EventPairHandle
590 IN ULONG TraceHandle
,
592 IN ULONG TraceHeaderLength
,
593 IN PEVENT_TRACE_HEADER TraceHeader
601 IN ULONG AtomNameLength
,
602 IN OUT PRTL_ATOM Atom
605 #ifdef NTOS_MODE_USER
610 IN HANDLE TimerHandle
,
611 OUT PBOOLEAN CurrentState OPTIONAL
619 IN HANDLE EventHandle
626 OUT PHANDLE EventHandle
,
627 IN ACCESS_MASK DesiredAccess
,
628 IN POBJECT_ATTRIBUTES ObjectAttributes
,
629 IN EVENT_TYPE EventType
,
630 IN BOOLEAN InitialState
637 OUT PHANDLE EventPairHandle
,
638 IN ACCESS_MASK DesiredAccess
,
639 IN POBJECT_ATTRIBUTES ObjectAttributes
646 OUT PHANDLE MutantHandle
,
647 IN ACCESS_MASK DesiredAccess
,
648 IN POBJECT_ATTRIBUTES ObjectAttributes
,
649 IN BOOLEAN InitialOwner
656 OUT PHANDLE SemaphoreHandle
,
657 IN ACCESS_MASK DesiredAccess
,
658 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
659 IN LONG InitialCount
,
663 #ifdef NTOS_MODE_USER
668 OUT PHANDLE TimerHandle
,
669 IN ACCESS_MASK DesiredAccess
,
670 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
671 IN TIMER_TYPE TimerType
686 IN PUNICODE_STRING DisplayString
694 IN ULONG AtomNameLength
,
695 OUT PRTL_ATOM Atom OPTIONAL
702 OUT PHANDLE EventHandle
,
703 IN ACCESS_MASK DesiredAccess
,
704 IN POBJECT_ATTRIBUTES ObjectAttributes
711 OUT PHANDLE EventPairHandle
,
712 IN ACCESS_MASK DesiredAccess
,
713 IN POBJECT_ATTRIBUTES ObjectAttributes
720 OUT PHANDLE MutantHandle
,
721 IN ACCESS_MASK DesiredAccess
,
722 IN POBJECT_ATTRIBUTES ObjectAttributes
729 OUT PHANDLE SemaphoreHandle
,
730 IN ACCESS_MASK DesiredAcces
,
731 IN POBJECT_ATTRIBUTES ObjectAttributes
734 #ifdef NTOS_MODE_USER
739 OUT PHANDLE TimerHandle
,
740 IN ACCESS_MASK DesiredAccess
,
741 IN POBJECT_ATTRIBUTES ObjectAttributes
749 IN HANDLE EventHandle
,
750 IN PLONG PulseCount OPTIONAL
756 ZwQueryDefaultLocale(
757 IN BOOLEAN UserProfile
,
758 OUT PLCID DefaultLocaleId
764 ZwQueryDefaultUILanguage(
772 IN HANDLE EventHandle
,
773 IN EVENT_INFORMATION_CLASS EventInformationClass
,
774 OUT PVOID EventInformation
,
775 IN ULONG EventInformationLength
,
776 OUT PULONG ReturnLength
782 ZwQueryInformationAtom(
784 IN ATOM_INFORMATION_CLASS AtomInformationClass
,
785 OUT PVOID AtomInformation
,
786 IN ULONG AtomInformationLength
,
787 OUT PULONG ReturnLength OPTIONAL
793 ZwQueryInstallUILanguage(
801 IN HANDLE MutantHandle
,
802 IN MUTANT_INFORMATION_CLASS MutantInformationClass
,
803 OUT PVOID MutantInformation
,
805 OUT PULONG ResultLength
812 IN HANDLE SemaphoreHandle
,
813 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass
,
814 OUT PVOID SemaphoreInformation
,
816 OUT PULONG ReturnLength
822 ZwQuerySystemEnvironmentValue(
823 IN PUNICODE_STRING Name
,
832 ZwQuerySystemInformation(
833 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
834 OUT PVOID SystemInformation
,
836 OUT PSIZE_T ResultLength
843 IN HANDLE TimerHandle
,
844 IN TIMER_INFORMATION_CLASS TimerInformationClass
,
845 OUT PVOID TimerInformation
,
847 OUT PULONG ResultLength
854 IN NTSTATUS ErrorStatus
,
855 IN ULONG NumberOfParameters
,
856 IN ULONG UnicodeStringParameterMask
,
857 IN PULONG_PTR Parameters
,
858 IN ULONG ValidResponseOptions
,
866 IN HANDLE MutantHandle
,
867 IN PLONG ReleaseCount OPTIONAL
874 IN HANDLE SemaphoreHandle
,
875 IN LONG ReleaseCount
,
876 OUT PLONG PreviousCount
883 IN HANDLE EventHandle
,
884 OUT PLONG NumberOfWaitingThreads OPTIONAL
891 IN BOOLEAN UserProfile
,
892 IN LCID DefaultLocaleId
898 ZwSetDefaultUILanguage(
905 ZwSetDefaultHardErrorPort(
913 IN HANDLE EventHandle
,
914 OUT PLONG PreviousState OPTIONAL
921 IN HANDLE EventPairHandle
927 ZwSetHighWaitLowEventPair(
928 IN HANDLE EventPairHandle
941 ZwSetLowWaitHighEventPair(
948 ZwSetSystemEnvironmentValue(
949 IN PUNICODE_STRING VariableName
,
950 IN PUNICODE_STRING Value
956 ZwSetSystemInformation(
957 IN SYSTEM_INFORMATION_CLASS SystemInformationClass
,
958 IN PVOID SystemInformation
,
959 IN SIZE_T SystemInformationLength
962 #ifdef NTOS_MODE_USER
967 IN HANDLE TimerHandle
,
968 IN PLARGE_INTEGER DueTime
,
969 IN PTIMER_APC_ROUTINE TimerApcRoutine
,
970 IN PVOID TimerContext
,
971 IN BOOLEAN WakeTimer
,
972 IN LONG Period OPTIONAL
,
973 OUT PBOOLEAN PreviousState OPTIONAL
988 IN SHUTDOWN_ACTION Action
995 IN HANDLE EventPairHandle
1002 IN HANDLE EventPairHandle
1009 IN ULONG TraceHandle
,
1011 IN ULONG TraceHeaderLength
,
1012 IN PEVENT_TRACE_HEADER TraceHeader