Avoid using uninitialized variables
[reactos.git] / reactos / include / ndk / exfuncs.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 exfuncs.h
8
9 Abstract:
10
11 Function definitions for the Executive.
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _EXFUNCS_H
20 #define _EXFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <pstypes.h>
27 #include <extypes.h>
28
29 //
30 // Don't include WMI headers just for one define
31 //
32 typedef struct _EVENT_TRACE_HEADER *PEVENT_TRACE_HEADER;
33
34 #ifndef NTOS_MODE_USER
35 //
36 // Fast Mutex functions
37 //
38 VOID
39 FASTCALL
40 ExEnterCriticalRegionAndAcquireFastMutexUnsafe(
41 PFAST_MUTEX FastMutex
42 );
43
44 VOID
45 FASTCALL
46 ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(
47 PFAST_MUTEX FastMutex
48 );
49
50 //
51 // Pushlock functions
52 //
53 VOID
54 FASTCALL
55 ExfAcquirePushLockExclusive(
56 PEX_PUSH_LOCK PushLock
57 );
58
59 VOID
60 FASTCALL
61 ExfAcquirePushLockShared(
62 PEX_PUSH_LOCK PushLock
63 );
64
65 VOID
66 FASTCALL
67 ExfReleasePushLock(
68 PEX_PUSH_LOCK PushLock
69 );
70
71 VOID
72 FASTCALL
73 ExfReleasePushLockExclusive(
74 PEX_PUSH_LOCK PushLock
75 );
76
77 VOID
78 FASTCALL
79 ExfReleasePushLockShared(
80 PEX_PUSH_LOCK PushLock
81 );
82
83 VOID
84 FASTCALL
85 ExfTryToWakePushLock(
86 PEX_PUSH_LOCK PushLock
87 );
88
89 VOID
90 FASTCALL
91 ExfUnblockPushLock(
92 PEX_PUSH_LOCK PushLock,
93 PVOID CurrentWaitBlock
94 );
95
96 #endif
97
98 //
99 // Native Calls
100 //
101 NTSTATUS
102 NTAPI
103 NtAddAtom(
104 IN PWSTR AtomName,
105 IN ULONG AtomNameLength,
106 IN OUT PRTL_ATOM Atom
107 );
108
109 NTSTATUS
110 NTAPI
111 NtCancelTimer(
112 IN HANDLE TimerHandle,
113 OUT PBOOLEAN CurrentState OPTIONAL
114 );
115
116 NTSTATUS
117 NTAPI
118 NtClearEvent(
119 IN HANDLE EventHandle
120 );
121
122 NTSTATUS
123 NTAPI
124 NtCreateEvent(
125 OUT PHANDLE EventHandle,
126 IN ACCESS_MASK DesiredAccess,
127 IN POBJECT_ATTRIBUTES ObjectAttributes,
128 IN EVENT_TYPE EventType,
129 IN BOOLEAN InitialState
130 );
131
132 NTSTATUS
133 NTAPI
134 NtCreateEventPair(
135 OUT PHANDLE EventPairHandle,
136 IN ACCESS_MASK DesiredAccess,
137 IN POBJECT_ATTRIBUTES ObjectAttributes
138 );
139
140 NTSTATUS
141 NTAPI
142 NtCreateMutant(
143 OUT PHANDLE MutantHandle,
144 IN ACCESS_MASK DesiredAccess,
145 IN POBJECT_ATTRIBUTES ObjectAttributes,
146 IN BOOLEAN InitialOwner
147 );
148
149 NTSTATUS
150 NTAPI
151 NtCreateSemaphore(
152 OUT PHANDLE SemaphoreHandle,
153 IN ACCESS_MASK DesiredAccess,
154 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
155 IN LONG InitialCount,
156 IN LONG MaximumCount
157 );
158
159 NTSTATUS
160 NTAPI
161 NtCreateTimer(
162 OUT PHANDLE TimerHandle,
163 IN ACCESS_MASK DesiredAccess,
164 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
165 IN TIMER_TYPE TimerType
166 );
167
168 NTSTATUS
169 NTAPI
170 NtDeleteAtom(
171 IN RTL_ATOM Atom
172 );
173
174 NTSTATUS
175 NTAPI
176 NtDisplayString(
177 IN PUNICODE_STRING DisplayString
178 );
179
180 NTSTATUS
181 NTAPI
182 NtFindAtom(
183 IN PWSTR AtomName,
184 IN ULONG AtomNameLength,
185 OUT PRTL_ATOM Atom OPTIONAL
186 );
187
188 NTSTATUS
189 NTAPI
190 NtOpenEvent(
191 OUT PHANDLE EventHandle,
192 IN ACCESS_MASK DesiredAccess,
193 IN POBJECT_ATTRIBUTES ObjectAttributes
194 );
195
196 NTSTATUS
197 NTAPI
198 NtOpenEventPair(
199 OUT PHANDLE EventPairHandle,
200 IN ACCESS_MASK DesiredAccess,
201 IN POBJECT_ATTRIBUTES ObjectAttributes
202 );
203
204 NTSTATUS
205 NTAPI
206 NtOpenMutant(
207 OUT PHANDLE MutantHandle,
208 IN ACCESS_MASK DesiredAccess,
209 IN POBJECT_ATTRIBUTES ObjectAttributes
210 );
211
212 NTSTATUS
213 NTAPI
214 NtOpenSemaphore(
215 OUT PHANDLE SemaphoreHandle,
216 IN ACCESS_MASK DesiredAcces,
217 IN POBJECT_ATTRIBUTES ObjectAttributes
218 );
219
220 NTSTATUS
221 NTAPI
222 NtOpenTimer(
223 OUT PHANDLE TimerHandle,
224 IN ACCESS_MASK DesiredAccess,
225 IN POBJECT_ATTRIBUTES ObjectAttributes
226 );
227
228 NTSTATUS
229 NTAPI
230 NtPulseEvent(
231 IN HANDLE EventHandle,
232 IN PLONG PulseCount OPTIONAL
233 );
234
235 NTSTATUS
236 NTAPI
237 NtQueryDefaultLocale(
238 IN BOOLEAN UserProfile,
239 OUT PLCID DefaultLocaleId
240 );
241
242 NTSTATUS
243 NTAPI
244 NtQueryDefaultUILanguage(
245 PLANGID LanguageId
246 );
247
248 NTSTATUS
249 NTAPI
250 NtQueryEvent(
251 IN HANDLE EventHandle,
252 IN EVENT_INFORMATION_CLASS EventInformationClass,
253 OUT PVOID EventInformation,
254 IN ULONG EventInformationLength,
255 OUT PULONG ReturnLength
256 );
257
258 NTSTATUS
259 NTAPI
260 NtQueryInformationAtom(
261 IN RTL_ATOM Atom,
262 IN ATOM_INFORMATION_CLASS AtomInformationClass,
263 OUT PVOID AtomInformation,
264 IN ULONG AtomInformationLength,
265 OUT PULONG ReturnLength OPTIONAL
266 );
267
268 NTSTATUS
269 NTAPI
270 NtQueryInstallUILanguage(
271 PLANGID LanguageId
272 );
273
274 NTSTATUS
275 NTAPI
276 NtQueryMutant(
277 IN HANDLE MutantHandle,
278 IN MUTANT_INFORMATION_CLASS MutantInformationClass,
279 OUT PVOID MutantInformation,
280 IN ULONG Length,
281 OUT PULONG ResultLength
282 );
283
284 NTSTATUS
285 NTAPI
286 NtQuerySemaphore(
287 IN HANDLE SemaphoreHandle,
288 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
289 OUT PVOID SemaphoreInformation,
290 IN ULONG Length,
291 OUT PULONG ReturnLength
292 );
293
294 NTSTATUS
295 NTAPI
296 NtQuerySystemEnvironmentValue(
297 IN PUNICODE_STRING Name,
298 OUT PWSTR Value,
299 ULONG Length,
300 PULONG ReturnLength
301 );
302
303 NTSTATUS
304 NTAPI
305 NtQuerySystemInformation(
306 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
307 OUT PVOID SystemInformation,
308 IN ULONG Length,
309 OUT PULONG ResultLength
310 );
311
312 NTSTATUS
313 NTAPI
314 NtQueryTimer(
315 IN HANDLE TimerHandle,
316 IN TIMER_INFORMATION_CLASS TimerInformationClass,
317 OUT PVOID TimerInformation,
318 IN ULONG Length,
319 OUT PULONG ResultLength
320 );
321
322 NTSTATUS
323 NTAPI
324 NtRaiseHardError(
325 IN NTSTATUS ErrorStatus,
326 IN ULONG NumberOfParameters,
327 IN ULONG UnicodeStringParameterMask,
328 IN PULONG_PTR Parameters,
329 IN ULONG ValidResponseOptions,
330 OUT PULONG Response
331 );
332
333 NTSTATUS
334 NTAPI
335 NtReleaseMutant(
336 IN HANDLE MutantHandle,
337 IN PLONG ReleaseCount OPTIONAL
338 );
339
340 NTSTATUS
341 NTAPI
342 NtReleaseSemaphore(
343 IN HANDLE SemaphoreHandle,
344 IN LONG ReleaseCount,
345 OUT PLONG PreviousCount
346 );
347
348 NTSTATUS
349 NTAPI
350 NtResetEvent(
351 IN HANDLE EventHandle,
352 OUT PLONG NumberOfWaitingThreads OPTIONAL
353 );
354
355 NTSTATUS
356 NTAPI
357 NtSetDefaultLocale(
358 IN BOOLEAN UserProfile,
359 IN LCID DefaultLocaleId
360 );
361
362 NTSTATUS
363 NTAPI
364 NtSetDefaultUILanguage(
365 LANGID LanguageId
366 );
367
368 NTSTATUS
369 NTAPI
370 NtSetDefaultHardErrorPort(
371 IN HANDLE PortHandle
372 );
373
374 NTSTATUS
375 NTAPI
376 NtSetEvent(
377 IN HANDLE EventHandle,
378 OUT PLONG PreviousState OPTIONAL
379 );
380
381 NTSTATUS
382 NTAPI
383 NtSetHighEventPair(
384 IN HANDLE EventPairHandle
385 );
386
387 NTSTATUS
388 NTAPI
389 NtSetHighWaitLowEventPair(
390 IN HANDLE EventPairHandle
391 );
392
393 NTSTATUS
394 NTAPI
395 NtSetLowEventPair(
396 HANDLE EventPair
397 );
398
399 NTSTATUS
400 NTAPI
401 NtSetLowWaitHighEventPair(
402 HANDLE EventPair
403 );
404
405 NTSTATUS
406 NTAPI
407 NtSetSystemEnvironmentValue(
408 IN PUNICODE_STRING VariableName,
409 IN PUNICODE_STRING Value
410 );
411
412 NTSTATUS
413 NTAPI
414 NtSetSystemInformation(
415 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
416 IN PVOID SystemInformation,
417 IN ULONG SystemInformationLength
418 );
419
420 NTSTATUS
421 NTAPI
422 NtSetTimer(
423 IN HANDLE TimerHandle,
424 IN PLARGE_INTEGER DueTime,
425 IN PTIMER_APC_ROUTINE TimerApcRoutine,
426 IN PVOID TimerContext,
427 IN BOOLEAN WakeTimer,
428 IN LONG Period OPTIONAL,
429 OUT PBOOLEAN PreviousState OPTIONAL
430 );
431
432 NTSTATUS
433 NTAPI
434 NtSetUuidSeed(
435 IN PUCHAR UuidSeed
436 );
437
438 NTSTATUS
439 NTAPI
440 NtShutdownSystem(
441 IN SHUTDOWN_ACTION Action
442 );
443
444 NTSTATUS
445 NTAPI
446 NtWaitHighEventPair(
447 IN HANDLE EventPairHandle
448 );
449
450 NTSTATUS
451 NTAPI
452 NtWaitLowEventPair(
453 IN HANDLE EventPairHandle
454 );
455
456 NTSTATUS
457 NTAPI
458 NtTraceEvent(
459 IN ULONG TraceHandle,
460 IN ULONG Flags,
461 IN ULONG TraceHeaderLength,
462 IN PEVENT_TRACE_HEADER TraceHeader
463 );
464
465 NTSTATUS
466 NTAPI
467 ZwAddAtom(
468 IN PWSTR AtomName,
469 IN ULONG AtomNameLength,
470 IN OUT PRTL_ATOM Atom
471 );
472
473 #ifdef NTOS_MODE_USER
474 NTSTATUS
475 NTAPI
476 ZwCancelTimer(
477 IN HANDLE TimerHandle,
478 OUT PBOOLEAN CurrentState OPTIONAL
479 );
480 #endif
481
482 NTSTATUS
483 NTAPI
484 ZwClearEvent(
485 IN HANDLE EventHandle
486 );
487
488 NTSYSAPI
489 NTSTATUS
490 NTAPI
491 ZwCreateEvent(
492 OUT PHANDLE EventHandle,
493 IN ACCESS_MASK DesiredAccess,
494 IN POBJECT_ATTRIBUTES ObjectAttributes,
495 IN EVENT_TYPE EventType,
496 IN BOOLEAN InitialState
497 );
498
499 NTSTATUS
500 NTAPI
501 ZwCreateEventPair(
502 OUT PHANDLE EventPairHandle,
503 IN ACCESS_MASK DesiredAccess,
504 IN POBJECT_ATTRIBUTES ObjectAttributes
505 );
506
507 NTSTATUS
508 NTAPI
509 ZwCreateMutant(
510 OUT PHANDLE MutantHandle,
511 IN ACCESS_MASK DesiredAccess,
512 IN POBJECT_ATTRIBUTES ObjectAttributes,
513 IN BOOLEAN InitialOwner
514 );
515
516 NTSTATUS
517 NTAPI
518 ZwCreateSemaphore(
519 OUT PHANDLE SemaphoreHandle,
520 IN ACCESS_MASK DesiredAccess,
521 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
522 IN LONG InitialCount,
523 IN LONG MaximumCount
524 );
525
526 #ifdef NTOS_MODE_USER
527 NTSTATUS
528 NTAPI
529 ZwCreateTimer(
530 OUT PHANDLE TimerHandle,
531 IN ACCESS_MASK DesiredAccess,
532 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
533 IN TIMER_TYPE TimerType
534 );
535 #endif
536
537 NTSTATUS
538 NTAPI
539 ZwDeleteAtom(
540 IN RTL_ATOM Atom
541 );
542
543 NTSTATUS
544 NTAPI
545 ZwDisplayString(
546 IN PUNICODE_STRING DisplayString
547 );
548
549 NTSTATUS
550 NTAPI
551 ZwFindAtom(
552 IN PWSTR AtomName,
553 IN ULONG AtomNameLength,
554 OUT PRTL_ATOM Atom OPTIONAL
555 );
556
557 NTSTATUS
558 NTAPI
559 ZwOpenEvent(
560 OUT PHANDLE EventHandle,
561 IN ACCESS_MASK DesiredAccess,
562 IN POBJECT_ATTRIBUTES ObjectAttributes
563 );
564
565 NTSTATUS
566 NTAPI
567 ZwOpenEventPair(
568 OUT PHANDLE EventPairHandle,
569 IN ACCESS_MASK DesiredAccess,
570 IN POBJECT_ATTRIBUTES ObjectAttributes
571 );
572
573 NTSTATUS
574 NTAPI
575 ZwOpenMutant(
576 OUT PHANDLE MutantHandle,
577 IN ACCESS_MASK DesiredAccess,
578 IN POBJECT_ATTRIBUTES ObjectAttributes
579 );
580
581 NTSTATUS
582 NTAPI
583 ZwOpenSemaphore(
584 OUT PHANDLE SemaphoreHandle,
585 IN ACCESS_MASK DesiredAcces,
586 IN POBJECT_ATTRIBUTES ObjectAttributes
587 );
588
589 #ifdef NTOS_MODE_USER
590 NTSTATUS
591 NTAPI
592 ZwOpenTimer(
593 OUT PHANDLE TimerHandle,
594 IN ACCESS_MASK DesiredAccess,
595 IN POBJECT_ATTRIBUTES ObjectAttributes
596 );
597 #endif
598
599 NTSTATUS
600 NTAPI
601 ZwPulseEvent(
602 IN HANDLE EventHandle,
603 IN PLONG PulseCount OPTIONAL
604 );
605
606 NTSTATUS
607 NTAPI
608 ZwQueryDefaultLocale(
609 IN BOOLEAN UserProfile,
610 OUT PLCID DefaultLocaleId
611 );
612
613 NTSTATUS
614 NTAPI
615 ZwQueryDefaultUILanguage(
616 PLANGID LanguageId
617 );
618
619 NTSTATUS
620 NTAPI
621 ZwQueryEvent(
622 IN HANDLE EventHandle,
623 IN EVENT_INFORMATION_CLASS EventInformationClass,
624 OUT PVOID EventInformation,
625 IN ULONG EventInformationLength,
626 OUT PULONG ReturnLength
627 );
628
629 NTSTATUS
630 NTAPI
631 ZwQueryInformationAtom(
632 IN RTL_ATOM Atom,
633 IN ATOM_INFORMATION_CLASS AtomInformationClass,
634 OUT PVOID AtomInformation,
635 IN ULONG AtomInformationLength,
636 OUT PULONG ReturnLength OPTIONAL
637 );
638
639 NTSTATUS
640 NTAPI
641 ZwQueryInstallUILanguage(
642 PLANGID LanguageId
643 );
644
645 NTSTATUS
646 NTAPI
647 ZwQueryMutant(
648 IN HANDLE MutantHandle,
649 IN MUTANT_INFORMATION_CLASS MutantInformationClass,
650 OUT PVOID MutantInformation,
651 IN ULONG Length,
652 OUT PULONG ResultLength
653 );
654
655 NTSTATUS
656 NTAPI
657 ZwQuerySemaphore(
658 IN HANDLE SemaphoreHandle,
659 IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass,
660 OUT PVOID SemaphoreInformation,
661 IN ULONG Length,
662 OUT PULONG ReturnLength
663 );
664
665 NTSTATUS
666 NTAPI
667 ZwQuerySystemEnvironmentValue(
668 IN PUNICODE_STRING Name,
669 OUT PWSTR Value,
670 ULONG Length,
671 PULONG ReturnLength
672 );
673
674 NTSTATUS
675 NTAPI
676 ZwQuerySystemInformation(
677 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
678 OUT PVOID SystemInformation,
679 IN ULONG Length,
680 OUT PULONG ResultLength
681 );
682
683 NTSTATUS
684 NTAPI
685 ZwQueryTimer(
686 IN HANDLE TimerHandle,
687 IN TIMER_INFORMATION_CLASS TimerInformationClass,
688 OUT PVOID TimerInformation,
689 IN ULONG Length,
690 OUT PULONG ResultLength
691 );
692
693 NTSTATUS
694 NTAPI
695 ZwRaiseHardError(
696 IN NTSTATUS ErrorStatus,
697 IN ULONG NumberOfParameters,
698 IN ULONG UnicodeStringParameterMask,
699 IN PULONG_PTR Parameters,
700 IN ULONG ValidResponseOptions,
701 OUT PULONG Response
702 );
703
704 NTSTATUS
705 NTAPI
706 ZwReleaseMutant(
707 IN HANDLE MutantHandle,
708 IN PLONG ReleaseCount OPTIONAL
709 );
710
711 NTSTATUS
712 NTAPI
713 ZwReleaseSemaphore(
714 IN HANDLE SemaphoreHandle,
715 IN LONG ReleaseCount,
716 OUT PLONG PreviousCount
717 );
718
719 NTSTATUS
720 NTAPI
721 ZwResetEvent(
722 IN HANDLE EventHandle,
723 OUT PLONG NumberOfWaitingThreads OPTIONAL
724 );
725
726 NTSTATUS
727 NTAPI
728 ZwSetDefaultLocale(
729 IN BOOLEAN UserProfile,
730 IN LCID DefaultLocaleId
731 );
732
733 NTSTATUS
734 NTAPI
735 ZwSetDefaultUILanguage(
736 LANGID LanguageId
737 );
738
739 NTSTATUS
740 NTAPI
741 ZwSetDefaultHardErrorPort(
742 IN HANDLE PortHandle
743 );
744
745 NTSYSAPI
746 NTSTATUS
747 NTAPI
748 ZwSetEvent(
749 IN HANDLE EventHandle,
750 OUT PLONG PreviousState OPTIONAL
751 );
752
753 NTSTATUS
754 NTAPI
755 ZwSetHighEventPair(
756 IN HANDLE EventPairHandle
757 );
758
759 NTSTATUS
760 NTAPI
761 ZwSetHighWaitLowEventPair(
762 IN HANDLE EventPairHandle
763 );
764
765 NTSTATUS
766 NTAPI
767 ZwSetLowEventPair(
768 HANDLE EventPair
769 );
770
771 NTSTATUS
772 NTAPI
773 ZwSetLowWaitHighEventPair(
774 HANDLE EventPair
775 );
776
777 NTSTATUS
778 NTAPI
779 ZwSetSystemEnvironmentValue(
780 IN PUNICODE_STRING VariableName,
781 IN PUNICODE_STRING Value
782 );
783
784 NTSTATUS
785 NTAPI
786 ZwSetSystemInformation(
787 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
788 IN PVOID SystemInformation,
789 IN ULONG SystemInformationLength
790 );
791
792 #ifdef NTOS_MODE_USER
793 NTSTATUS
794 NTAPI
795 ZwSetTimer(
796 IN HANDLE TimerHandle,
797 IN PLARGE_INTEGER DueTime,
798 IN PTIMER_APC_ROUTINE TimerApcRoutine,
799 IN PVOID TimerContext,
800 IN BOOLEAN WakeTimer,
801 IN LONG Period OPTIONAL,
802 OUT PBOOLEAN PreviousState OPTIONAL
803 );
804 #endif
805
806 NTSTATUS
807 NTAPI
808 ZwSetUuidSeed(
809 IN PUCHAR UuidSeed
810 );
811
812 NTSTATUS
813 NTAPI
814 ZwShutdownSystem(
815 IN SHUTDOWN_ACTION Action
816 );
817
818 NTSTATUS
819 NTAPI
820 ZwWaitHighEventPair(
821 IN HANDLE EventPairHandle
822 );
823
824 NTSTATUS
825 NTAPI
826 ZwWaitLowEventPair(
827 IN HANDLE EventPairHandle
828 );
829
830 NTSTATUS
831 NTAPI
832 ZwTraceEvent(
833 IN ULONG TraceHandle,
834 IN ULONG Flags,
835 IN ULONG TraceHeaderLength,
836 IN PEVENT_TRACE_HEADER TraceHeader
837 );
838 #endif