Sync with trunk head (part 1 or 2)
[reactos.git] / include / xdk / kefuncs.h
1 /******************************************************************************
2 * Kernel Functions *
3 ******************************************************************************/
4 $if (_WDMDDK_)
5 NTKERNELAPI
6 VOID
7 NTAPI
8 KeInitializeEvent(
9 OUT PRKEVENT Event,
10 IN EVENT_TYPE Type,
11 IN BOOLEAN State);
12
13 NTKERNELAPI
14 VOID
15 NTAPI
16 KeClearEvent(
17 IN OUT PRKEVENT Event);
18 $endif (_WDMDDK_)
19 $if (_NTDDK_)
20
21 NTKERNELAPI
22 VOID
23 FASTCALL
24 KeInvalidateRangeAllCaches(
25 IN PVOID BaseAddress,
26 IN ULONG Length);
27 $endif (_NTDDK_)
28 $if (_NTIFS_)
29
30 NTSTATUS
31 NTAPI
32 KeGetProcessorNumberFromIndex(
33 IN ULONG ProcIndex,
34 OUT PPROCESSOR_NUMBER ProcNumber);
35
36 ULONG
37 NTAPI
38 KeGetProcessorIndexFromNumber(
39 IN PPROCESSOR_NUMBER ProcNumber);
40 $endif (_NTIFS_)
41
42 #if (NTDDI_VERSION >= NTDDI_WIN2K)
43
44 $if (_WDMDDK_)
45 #if defined(_NTDDK_) || defined(_NTIFS_)
46 NTKERNELAPI
47 VOID
48 NTAPI
49 ProbeForRead(
50 IN CONST VOID *Address, /* CONST is added */
51 IN SIZE_T Length,
52 IN ULONG Alignment);
53 #endif /* defined(_NTDDK_) || defined(_NTIFS_) */
54
55 NTKERNELAPI
56 VOID
57 NTAPI
58 ProbeForWrite(
59 IN PVOID Address,
60 IN SIZE_T Length,
61 IN ULONG Alignment);
62
63 $endif (_WDMDDK_)
64 $if (_NTDDK_)
65 NTKERNELAPI
66 VOID
67 NTAPI
68 KeSetImportanceDpc(
69 IN OUT PRKDPC Dpc,
70 IN KDPC_IMPORTANCE Importance);
71
72 NTKERNELAPI
73 LONG
74 NTAPI
75 KePulseEvent(
76 IN OUT PRKEVENT Event,
77 IN KPRIORITY Increment,
78 IN BOOLEAN Wait);
79
80 NTKERNELAPI
81 LONG
82 NTAPI
83 KeSetBasePriorityThread(
84 IN OUT PRKTHREAD Thread,
85 IN LONG Increment);
86
87 NTKERNELAPI
88 VOID
89 NTAPI
90 KeEnterCriticalRegion(VOID);
91
92 NTKERNELAPI
93 VOID
94 NTAPI
95 KeLeaveCriticalRegion(VOID);
96
97 NTKERNELAPI
98 DECLSPEC_NORETURN
99 VOID
100 NTAPI
101 KeBugCheck(
102 IN ULONG BugCheckCode);
103 $endif(_NTDDK_)
104 $if (_WDMDDK_ || _NTDDK_)
105 #if defined(SINGLE_GROUP_LEGACY_API)
106 $endif
107
108 $if (_WDMDDK_)
109 NTKERNELAPI
110 VOID
111 NTAPI
112 KeRevertToUserAffinityThread(VOID);
113
114 NTKERNELAPI
115 VOID
116 NTAPI
117 KeSetSystemAffinityThread(
118 IN KAFFINITY Affinity);
119
120 NTKERNELAPI
121 VOID
122 NTAPI
123 KeSetTargetProcessorDpc(
124 IN OUT PRKDPC Dpc,
125 IN CCHAR Number);
126
127 NTKERNELAPI
128 KAFFINITY
129 NTAPI
130 KeQueryActiveProcessors(VOID);
131 $endif (_WDMDDK_)
132 $if (_NTDDK_)
133
134 NTKERNELAPI
135 VOID
136 NTAPI
137 KeSetTargetProcessorDpc(
138 IN OUT PRKDPC Dpc,
139 IN CCHAR Number);
140
141 NTKERNELAPI
142 KAFFINITY
143 NTAPI
144 KeQueryActiveProcessors(VOID);
145 $endif (_NTDDK_)
146 $if (_WDMDDK_ || _NTDDK_)
147 #endif /* defined(SINGLE_GROUP_LEGACY_API) */
148 $endif
149
150 $if (_WDMDDK_)
151 #if !defined(_M_AMD64)
152 NTKERNELAPI
153 ULONGLONG
154 NTAPI
155 KeQueryInterruptTime(VOID);
156
157 NTKERNELAPI
158 VOID
159 NTAPI
160 KeQuerySystemTime(
161 OUT PLARGE_INTEGER CurrentTime);
162 #endif /* !_M_AMD64 */
163
164 #if !defined(_X86_)
165 NTKERNELAPI
166 KIRQL
167 NTAPI
168 KeAcquireSpinLockRaiseToDpc(
169 IN OUT PKSPIN_LOCK SpinLock);
170
171 #define KeAcquireSpinLock(SpinLock, OldIrql) \
172 *(OldIrql) = KeAcquireSpinLockRaiseToDpc(SpinLock)
173
174 NTKERNELAPI
175 VOID
176 NTAPI
177 KeAcquireSpinLockAtDpcLevel(
178 IN OUT PKSPIN_LOCK SpinLock);
179
180 NTKERNELAPI
181 VOID
182 NTAPI
183 KeReleaseSpinLock(
184 IN OUT PKSPIN_LOCK SpinLock,
185 IN KIRQL NewIrql);
186
187 NTKERNELAPI
188 VOID
189 NTAPI
190 KeReleaseSpinLockFromDpcLevel(
191 IN OUT PKSPIN_LOCK SpinLock);
192 #endif /* !_X86_ */
193
194 #if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK))
195 NTKERNELAPI
196 VOID
197 NTAPI
198 KeInitializeSpinLock(
199 IN PKSPIN_LOCK SpinLock);
200 #else
201 FORCEINLINE
202 VOID
203 KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
204 {
205 /* Clear the lock */
206 *SpinLock = 0;
207 }
208 #endif
209
210 NTKERNELAPI
211 DECLSPEC_NORETURN
212 VOID
213 NTAPI
214 KeBugCheckEx(
215 IN ULONG BugCheckCode,
216 IN ULONG_PTR BugCheckParameter1,
217 IN ULONG_PTR BugCheckParameter2,
218 IN ULONG_PTR BugCheckParameter3,
219 IN ULONG_PTR BugCheckParameter4);
220
221 NTKERNELAPI
222 BOOLEAN
223 NTAPI
224 KeCancelTimer(
225 IN OUT PKTIMER);
226
227 NTKERNELAPI
228 NTSTATUS
229 NTAPI
230 KeDelayExecutionThread(
231 IN KPROCESSOR_MODE WaitMode,
232 IN BOOLEAN Alertable,
233 IN PLARGE_INTEGER Interval);
234
235 NTKERNELAPI
236 BOOLEAN
237 NTAPI
238 KeDeregisterBugCheckCallback(
239 IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
240
241 NTKERNELAPI
242 VOID
243 NTAPI
244 KeEnterCriticalRegion(VOID);
245
246 NTKERNELAPI
247 VOID
248 NTAPI
249 KeInitializeDeviceQueue(
250 OUT PKDEVICE_QUEUE DeviceQueue);
251
252 NTKERNELAPI
253 VOID
254 NTAPI
255 KeInitializeDpc(
256 OUT PRKDPC Dpc,
257 IN PKDEFERRED_ROUTINE DeferredRoutine,
258 IN PVOID DeferredContext OPTIONAL);
259
260 NTKERNELAPI
261 VOID
262 NTAPI
263 KeInitializeMutex(
264 OUT PRKMUTEX Mutex,
265 IN ULONG Level);
266
267 NTKERNELAPI
268 VOID
269 NTAPI
270 KeInitializeSemaphore(
271 OUT PRKSEMAPHORE Semaphore,
272 IN LONG Count,
273 IN LONG Limit);
274
275 NTKERNELAPI
276 VOID
277 NTAPI
278 KeInitializeTimer(
279 OUT PKTIMER Timer);
280
281 NTKERNELAPI
282 VOID
283 NTAPI
284 KeInitializeTimerEx(
285 OUT PKTIMER Timer,
286 IN TIMER_TYPE Type);
287
288 NTKERNELAPI
289 BOOLEAN
290 NTAPI
291 KeInsertByKeyDeviceQueue(
292 IN OUT PKDEVICE_QUEUE DeviceQueue,
293 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
294 IN ULONG SortKey);
295
296 NTKERNELAPI
297 BOOLEAN
298 NTAPI
299 KeInsertDeviceQueue(
300 IN OUT PKDEVICE_QUEUE DeviceQueue,
301 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
302
303 NTKERNELAPI
304 BOOLEAN
305 NTAPI
306 KeInsertQueueDpc(
307 IN OUT PRKDPC Dpc,
308 IN PVOID SystemArgument1 OPTIONAL,
309 IN PVOID SystemArgument2 OPTIONAL);
310
311 NTKERNELAPI
312 VOID
313 NTAPI
314 KeLeaveCriticalRegion(VOID);
315
316 NTHALAPI
317 LARGE_INTEGER
318 NTAPI
319 KeQueryPerformanceCounter(
320 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
321
322 NTKERNELAPI
323 KPRIORITY
324 NTAPI
325 KeQueryPriorityThread(
326 IN PRKTHREAD Thread);
327
328 NTKERNELAPI
329 ULONG
330 NTAPI
331 KeQueryTimeIncrement(VOID);
332
333 NTKERNELAPI
334 LONG
335 NTAPI
336 KeReadStateEvent(
337 IN PRKEVENT Event);
338
339 NTKERNELAPI
340 LONG
341 NTAPI
342 KeReadStateMutex(
343 IN PRKMUTEX Mutex);
344
345 NTKERNELAPI
346 LONG
347 NTAPI
348 KeReadStateSemaphore(
349 IN PRKSEMAPHORE Semaphore);
350
351 NTKERNELAPI
352 BOOLEAN
353 NTAPI
354 KeReadStateTimer(
355 IN PKTIMER Timer);
356
357 NTKERNELAPI
358 BOOLEAN
359 NTAPI
360 KeRegisterBugCheckCallback(
361 OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
362 IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
363 IN PVOID Buffer,
364 IN ULONG Length,
365 IN PUCHAR Component);
366
367 NTKERNELAPI
368 LONG
369 NTAPI
370 KeReleaseMutex(
371 IN OUT PRKMUTEX Mutex,
372 IN BOOLEAN Wait);
373
374 NTKERNELAPI
375 LONG
376 NTAPI
377 KeReleaseSemaphore(
378 IN OUT PRKSEMAPHORE Semaphore,
379 IN KPRIORITY Increment,
380 IN LONG Adjustment,
381 IN BOOLEAN Wait);
382
383 NTKERNELAPI
384 PKDEVICE_QUEUE_ENTRY
385 NTAPI
386 KeRemoveByKeyDeviceQueue(
387 IN OUT PKDEVICE_QUEUE DeviceQueue,
388 IN ULONG SortKey);
389
390 NTKERNELAPI
391 PKDEVICE_QUEUE_ENTRY
392 NTAPI
393 KeRemoveDeviceQueue(
394 IN OUT PKDEVICE_QUEUE DeviceQueue);
395
396 NTKERNELAPI
397 BOOLEAN
398 NTAPI
399 KeRemoveEntryDeviceQueue(
400 IN OUT PKDEVICE_QUEUE DeviceQueue,
401 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
402
403 NTKERNELAPI
404 BOOLEAN
405 NTAPI
406 KeRemoveQueueDpc(
407 IN OUT PRKDPC Dpc);
408
409 NTKERNELAPI
410 LONG
411 NTAPI
412 KeResetEvent(
413 IN OUT PRKEVENT Event);
414
415 NTKERNELAPI
416 LONG
417 NTAPI
418 KeSetEvent(
419 IN OUT PRKEVENT Event,
420 IN KPRIORITY Increment,
421 IN BOOLEAN Wait);
422
423 NTKERNELAPI
424 VOID
425 NTAPI
426 KeSetImportanceDpc(
427 IN OUT PRKDPC Dpc,
428 IN KDPC_IMPORTANCE Importance);
429
430 NTKERNELAPI
431 KPRIORITY
432 NTAPI
433 KeSetPriorityThread(
434 IN OUT PKTHREAD Thread,
435 IN KPRIORITY Priority);
436
437 NTKERNELAPI
438 BOOLEAN
439 NTAPI
440 KeSetTimer(
441 IN OUT PKTIMER Timer,
442 IN LARGE_INTEGER DueTime,
443 IN PKDPC Dpc OPTIONAL);
444
445 NTKERNELAPI
446 BOOLEAN
447 NTAPI
448 KeSetTimerEx(
449 IN OUT PKTIMER Timer,
450 IN LARGE_INTEGER DueTime,
451 IN LONG Period OPTIONAL,
452 IN PKDPC Dpc OPTIONAL);
453
454 NTHALAPI
455 VOID
456 NTAPI
457 KeStallExecutionProcessor(
458 IN ULONG MicroSeconds);
459
460 NTKERNELAPI
461 BOOLEAN
462 NTAPI
463 KeSynchronizeExecution(
464 IN OUT PKINTERRUPT Interrupt,
465 IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
466 IN PVOID SynchronizeContext OPTIONAL);
467
468 NTKERNELAPI
469 NTSTATUS
470 NTAPI
471 KeWaitForMultipleObjects(
472 IN ULONG Count,
473 IN PVOID Object[],
474 IN WAIT_TYPE WaitType,
475 IN KWAIT_REASON WaitReason,
476 IN KPROCESSOR_MODE WaitMode,
477 IN BOOLEAN Alertable,
478 IN PLARGE_INTEGER Timeout OPTIONAL,
479 OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL);
480
481 #define KeWaitForMutexObject KeWaitForSingleObject
482
483 NTKERNELAPI
484 NTSTATUS
485 NTAPI
486 KeWaitForSingleObject(
487 IN PVOID Object,
488 IN KWAIT_REASON WaitReason,
489 IN KPROCESSOR_MODE WaitMode,
490 IN BOOLEAN Alertable,
491 IN PLARGE_INTEGER Timeout OPTIONAL);
492 $endif (_WDMDDK_)
493 $if (_NTIFS_)
494
495 NTKERNELAPI
496 VOID
497 NTAPI
498 KeInitializeMutant(
499 OUT PRKMUTANT Mutant,
500 IN BOOLEAN InitialOwner);
501
502 NTKERNELAPI
503 LONG
504 NTAPI
505 KeReadStateMutant(
506 IN PRKMUTANT Mutant);
507
508 NTKERNELAPI
509 LONG
510 NTAPI
511 KeReleaseMutant(
512 IN OUT PRKMUTANT Mutant,
513 IN KPRIORITY Increment,
514 IN BOOLEAN Abandoned,
515 IN BOOLEAN Wait);
516
517 NTKERNELAPI
518 VOID
519 NTAPI
520 KeInitializeQueue(
521 OUT PRKQUEUE Queue,
522 IN ULONG Count);
523
524 NTKERNELAPI
525 LONG
526 NTAPI
527 KeReadStateQueue(
528 IN PRKQUEUE Queue);
529
530 NTKERNELAPI
531 LONG
532 NTAPI
533 KeInsertQueue(
534 IN OUT PRKQUEUE Queue,
535 IN OUT PLIST_ENTRY Entry);
536
537 NTKERNELAPI
538 LONG
539 NTAPI
540 KeInsertHeadQueue(
541 IN OUT PRKQUEUE Queue,
542 IN OUT PLIST_ENTRY Entry);
543
544 NTKERNELAPI
545 PLIST_ENTRY
546 NTAPI
547 KeRemoveQueue(
548 IN OUT PRKQUEUE Queue,
549 IN KPROCESSOR_MODE WaitMode,
550 IN PLARGE_INTEGER Timeout OPTIONAL);
551
552 NTKERNELAPI
553 VOID
554 NTAPI
555 KeAttachProcess(
556 IN OUT PKPROCESS Process);
557
558 NTKERNELAPI
559 VOID
560 NTAPI
561 KeDetachProcess(
562 VOID);
563
564 NTKERNELAPI
565 PLIST_ENTRY
566 NTAPI
567 KeRundownQueue(
568 IN OUT PRKQUEUE Queue);
569
570 NTKERNELAPI
571 VOID
572 NTAPI
573 KeStackAttachProcess(
574 IN OUT PKPROCESS Process,
575 OUT PKAPC_STATE ApcState);
576
577 NTKERNELAPI
578 VOID
579 NTAPI
580 KeUnstackDetachProcess(
581 IN PKAPC_STATE ApcState);
582
583 NTKERNELAPI
584 UCHAR
585 NTAPI
586 KeSetIdealProcessorThread(
587 IN OUT PKTHREAD Thread,
588 IN UCHAR Processor);
589
590 NTKERNELAPI
591 BOOLEAN
592 NTAPI
593 KeSetKernelStackSwapEnable(
594 IN BOOLEAN Enable);
595
596 #if defined(_X86_)
597 NTHALAPI
598 KIRQL
599 FASTCALL
600 KeAcquireSpinLockRaiseToSynch(
601 IN OUT PKSPIN_LOCK SpinLock);
602 #else
603 NTKERNELAPI
604 KIRQL
605 KeAcquireSpinLockRaiseToSynch(
606 IN OUT PKSPIN_LOCK SpinLock);
607 #endif
608 $endif
609
610 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
611
612 #if (NTDDI_VERSION >= NTDDI_WINXP)
613
614 $if (_WDMDDK_)
615 _DECL_HAL_KE_IMPORT
616 VOID
617 FASTCALL
618 KeAcquireInStackQueuedSpinLock(
619 IN OUT PKSPIN_LOCK SpinLock,
620 OUT PKLOCK_QUEUE_HANDLE LockHandle);
621
622 NTKERNELAPI
623 VOID
624 FASTCALL
625 KeAcquireInStackQueuedSpinLockAtDpcLevel(
626 IN OUT PKSPIN_LOCK SpinLock,
627 OUT PKLOCK_QUEUE_HANDLE LockHandle);
628
629 NTKERNELAPI
630 KIRQL
631 NTAPI
632 KeAcquireInterruptSpinLock(
633 IN OUT PKINTERRUPT Interrupt);
634
635 NTKERNELAPI
636 BOOLEAN
637 NTAPI
638 KeAreApcsDisabled(VOID);
639
640 NTKERNELAPI
641 ULONG
642 NTAPI
643 KeGetRecommendedSharedDataAlignment(VOID);
644
645 NTKERNELAPI
646 ULONG
647 NTAPI
648 KeQueryRuntimeThread(
649 IN PKTHREAD Thread,
650 OUT PULONG UserTime);
651
652 NTKERNELAPI
653 VOID
654 FASTCALL
655 KeReleaseInStackQueuedSpinLockFromDpcLevel(
656 IN PKLOCK_QUEUE_HANDLE LockHandle);
657
658 NTKERNELAPI
659 VOID
660 NTAPI
661 KeReleaseInterruptSpinLock(
662 IN OUT PKINTERRUPT Interrupt,
663 IN KIRQL OldIrql);
664
665 NTKERNELAPI
666 PKDEVICE_QUEUE_ENTRY
667 NTAPI
668 KeRemoveByKeyDeviceQueueIfBusy(
669 IN OUT PKDEVICE_QUEUE DeviceQueue,
670 IN ULONG SortKey);
671
672 _DECL_HAL_KE_IMPORT
673 VOID
674 FASTCALL
675 KeReleaseInStackQueuedSpinLock(
676 IN PKLOCK_QUEUE_HANDLE LockHandle);
677 $endif (_WDMDDK_)
678 $if (_NTDDK_)
679 NTKERNELAPI
680 BOOLEAN
681 NTAPI
682 KeAreApcsDisabled(VOID);
683 $endif (_NTDDK_)
684 $if (_NTIFS_)
685
686 _DECL_HAL_KE_IMPORT
687 KIRQL
688 FASTCALL
689 KeAcquireQueuedSpinLock(
690 IN OUT KSPIN_LOCK_QUEUE_NUMBER Number);
691
692 _DECL_HAL_KE_IMPORT
693 VOID
694 FASTCALL
695 KeReleaseQueuedSpinLock(
696 IN OUT KSPIN_LOCK_QUEUE_NUMBER Number,
697 IN KIRQL OldIrql);
698
699 _DECL_HAL_KE_IMPORT
700 LOGICAL
701 FASTCALL
702 KeTryToAcquireQueuedSpinLock(
703 IN KSPIN_LOCK_QUEUE_NUMBER Number,
704 OUT PKIRQL OldIrql);
705 $endif (_NTIFS_)
706
707 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
708
709 $if (_WDMDDK_)
710 #if (NTDDI_VERSION >= NTDDI_WINXPSP1)
711
712 NTKERNELAPI
713 BOOLEAN
714 NTAPI
715 KeDeregisterBugCheckReasonCallback(
716 IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord);
717
718 NTKERNELAPI
719 BOOLEAN
720 NTAPI
721 KeRegisterBugCheckReasonCallback(
722 OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
723 IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
724 IN KBUGCHECK_CALLBACK_REASON Reason,
725 IN PUCHAR Component);
726
727 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */
728
729 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
730 NTKERNELAPI
731 VOID
732 NTAPI
733 KeFlushQueuedDpcs(VOID);
734 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */
735 $endif (_WDMDDK_)
736 $if (_WDMDDK_ || _NTDDK_)
737 #if (NTDDI_VERSION >= NTDDI_WS03)
738 $endif
739
740 $if (_WDMDDK_)
741 NTKERNELAPI
742 PVOID
743 NTAPI
744 KeRegisterNmiCallback(
745 IN PNMI_CALLBACK CallbackRoutine,
746 IN PVOID Context OPTIONAL);
747
748 NTKERNELAPI
749 NTSTATUS
750 NTAPI
751 KeDeregisterNmiCallback(
752 IN PVOID Handle);
753
754 NTKERNELAPI
755 VOID
756 NTAPI
757 KeInitializeThreadedDpc(
758 OUT PRKDPC Dpc,
759 IN PKDEFERRED_ROUTINE DeferredRoutine,
760 IN PVOID DeferredContext OPTIONAL);
761
762 NTKERNELAPI
763 ULONG_PTR
764 NTAPI
765 KeIpiGenericCall(
766 IN PKIPI_BROADCAST_WORKER BroadcastFunction,
767 IN ULONG_PTR Context);
768
769 NTKERNELAPI
770 KIRQL
771 FASTCALL
772 KeAcquireSpinLockForDpc(
773 IN OUT PKSPIN_LOCK SpinLock);
774
775 NTKERNELAPI
776 VOID
777 FASTCALL
778 KeReleaseSpinLockForDpc(
779 IN OUT PKSPIN_LOCK SpinLock,
780 IN KIRQL OldIrql);
781
782 NTKERNELAPI
783 BOOLEAN
784 FASTCALL
785 KeTestSpinLock(
786 IN PKSPIN_LOCK SpinLock);
787 $endif (_WDMDDK_)
788
789 $if (_NTDDK_)
790 NTKERNELAPI
791 BOOLEAN
792 NTAPI
793 KeInvalidateAllCaches(VOID);
794 $endif (_NTDDK_)
795 $if (_WDMDDK_ || _NTDDK_)
796 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
797 $endif
798 $if (_WDMDDK_ || _NTDDK_)
799 #if (NTDDI_VERSION >= NTDDI_WS03SP1)
800 $endif
801
802 $if (_WDMDDK_)
803 NTKERNELAPI
804 BOOLEAN
805 FASTCALL
806 KeTryToAcquireSpinLockAtDpcLevel(
807 IN OUT PKSPIN_LOCK SpinLock);
808
809 NTKERNELAPI
810 BOOLEAN
811 NTAPI
812 KeAreAllApcsDisabled(VOID);
813
814 NTKERNELAPI
815 VOID
816 FASTCALL
817 KeAcquireGuardedMutex(
818 IN OUT PKGUARDED_MUTEX GuardedMutex);
819
820 NTKERNELAPI
821 VOID
822 FASTCALL
823 KeAcquireGuardedMutexUnsafe(
824 IN OUT PKGUARDED_MUTEX GuardedMutex);
825
826 NTKERNELAPI
827 VOID
828 NTAPI
829 KeEnterGuardedRegion(VOID);
830
831 NTKERNELAPI
832 VOID
833 NTAPI
834 KeLeaveGuardedRegion(VOID);
835
836 NTKERNELAPI
837 VOID
838 FASTCALL
839 KeInitializeGuardedMutex(
840 OUT PKGUARDED_MUTEX GuardedMutex);
841
842 NTKERNELAPI
843 VOID
844 FASTCALL
845 KeReleaseGuardedMutexUnsafe(
846 IN OUT PKGUARDED_MUTEX GuardedMutex);
847
848 NTKERNELAPI
849 VOID
850 FASTCALL
851 KeReleaseGuardedMutex(
852 IN OUT PKGUARDED_MUTEX GuardedMutex);
853
854 NTKERNELAPI
855 BOOLEAN
856 FASTCALL
857 KeTryToAcquireGuardedMutex(
858 IN OUT PKGUARDED_MUTEX GuardedMutex);
859 $endif (_WDMDDK_)
860 $if (_NTDDK_)
861 NTKERNELAPI
862 NTSTATUS
863 NTAPI
864 KeExpandKernelStackAndCallout(
865 IN PEXPAND_STACK_CALLOUT Callout,
866 IN PVOID Parameter OPTIONAL,
867 IN SIZE_T Size);
868
869 NTKERNELAPI
870 VOID
871 NTAPI
872 KeEnterGuardedRegion(VOID);
873
874 NTKERNELAPI
875 VOID
876 NTAPI
877 KeLeaveGuardedRegion(VOID);
878 $endif (_NTDDK_)
879 $if (_WDMDDK_ || _NTDDK_)
880 #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
881 $endif
882
883 #if (NTDDI_VERSION >= NTDDI_VISTA)
884 $if (_WDMDDK_)
885 NTKERNELAPI
886 VOID
887 FASTCALL
888 KeAcquireInStackQueuedSpinLockForDpc(
889 IN OUT PKSPIN_LOCK SpinLock,
890 OUT PKLOCK_QUEUE_HANDLE LockHandle);
891
892 NTKERNELAPI
893 VOID
894 FASTCALL
895 KeReleaseInStackQueuedSpinLockForDpc(
896 IN PKLOCK_QUEUE_HANDLE LockHandle);
897
898 NTKERNELAPI
899 NTSTATUS
900 NTAPI
901 KeQueryDpcWatchdogInformation(
902 OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation);
903 $endif (_WDMDDK_)
904 $if (_WDMDDK_ || _NTDDK_)
905 #if defined(SINGLE_GROUP_LEGACY_API)
906 $endif
907
908 $if (_WDMDDK_)
909 NTKERNELAPI
910 KAFFINITY
911 NTAPI
912 KeSetSystemAffinityThreadEx(
913 IN KAFFINITY Affinity);
914
915 NTKERNELAPI
916 VOID
917 NTAPI
918 KeRevertToUserAffinityThreadEx(
919 IN KAFFINITY Affinity);
920
921 NTKERNELAPI
922 ULONG
923 NTAPI
924 KeQueryActiveProcessorCount(
925 OUT PKAFFINITY ActiveProcessors OPTIONAL);
926
927 NTKERNELAPI
928 ULONG
929 NTAPI
930 KeQueryMaximumProcessorCount(VOID);
931 $endif (_WDMDDK_)
932 $if (_NTDDK_)
933 NTKERNELAPI
934 ULONG
935 NTAPI
936 KeQueryActiveProcessorCount(
937 OUT PKAFFINITY ActiveProcessors OPTIONAL);
938
939 NTKERNELAPI
940 ULONG
941 NTAPI
942 KeQueryMaximumProcessorCount(VOID);
943 $endif (_NTDDK_)
944 $if (_WDMDDK_ || _NTDDK_)
945 #endif /* SINGLE_GROUP_LEGACY_API */
946 $endif
947 $if (_NTIFS_)
948 NTKERNELAPI
949 VOID
950 KeQueryOwnerMutant(
951 IN PKMUTANT Mutant,
952 OUT PCLIENT_ID ClientId);
953
954 NTKERNELAPI
955 ULONG
956 KeRemoveQueueEx (
957 IN OUT PKQUEUE Queue,
958 IN KPROCESSOR_MODE WaitMode,
959 IN BOOLEAN Alertable,
960 IN PLARGE_INTEGER Timeout OPTIONAL,
961 OUT PLIST_ENTRY *EntryArray,
962 IN ULONG Count);
963 $endif (_NTIFS_)
964
965 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
966
967 $if (_WDMDDK_)
968 #if (NTDDI_VERSION >= NTDDI_WS08)
969
970 PVOID
971 KeRegisterProcessorChangeCallback(
972 IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction,
973 IN PVOID CallbackContext OPTIONAL,
974 IN ULONG Flags);
975
976 VOID
977 KeDeregisterProcessorChangeCallback(
978 IN PVOID CallbackHandle);
979
980 #endif /* (NTDDI_VERSION >= NTDDI_WS08) */
981 $endif (_WDMDDK_)
982 $if (_WDMDDK_ || _NTDDK_)
983 #if (NTDDI_VERSION >= NTDDI_WIN7)
984 $endif
985
986 $if (_WDMDDK_)
987 ULONG64
988 NTAPI
989 KeQueryTotalCycleTimeProcess(
990 IN OUT PKPROCESS Process,
991 OUT PULONG64 CycleTimeStamp);
992
993 ULONG64
994 NTAPI
995 KeQueryTotalCycleTimeThread(
996 IN OUT PKTHREAD Thread,
997 OUT PULONG64 CycleTimeStamp);
998
999 NTKERNELAPI
1000 NTSTATUS
1001 NTAPI
1002 KeSetTargetProcessorDpcEx(
1003 IN OUT PKDPC Dpc,
1004 IN PPROCESSOR_NUMBER ProcNumber);
1005
1006 NTKERNELAPI
1007 VOID
1008 NTAPI
1009 KeSetSystemGroupAffinityThread(
1010 IN PGROUP_AFFINITY Affinity,
1011 OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL);
1012
1013 NTKERNELAPI
1014 VOID
1015 NTAPI
1016 KeRevertToUserGroupAffinityThread(
1017 IN PGROUP_AFFINITY PreviousAffinity);
1018
1019 NTKERNELAPI
1020 BOOLEAN
1021 NTAPI
1022 KeSetCoalescableTimer(
1023 IN OUT PKTIMER Timer,
1024 IN LARGE_INTEGER DueTime,
1025 IN ULONG Period,
1026 IN ULONG TolerableDelay,
1027 IN PKDPC Dpc OPTIONAL);
1028
1029 NTKERNELAPI
1030 ULONGLONG
1031 NTAPI
1032 KeQueryUnbiasedInterruptTime(VOID);
1033
1034 NTKERNELAPI
1035 ULONG
1036 NTAPI
1037 KeQueryActiveProcessorCountEx(
1038 IN USHORT GroupNumber);
1039
1040 NTKERNELAPI
1041 ULONG
1042 NTAPI
1043 KeQueryMaximumProcessorCountEx(
1044 IN USHORT GroupNumber);
1045
1046 NTKERNELAPI
1047 USHORT
1048 NTAPI
1049 KeQueryActiveGroupCount(VOID);
1050
1051 NTKERNELAPI
1052 USHORT
1053 NTAPI
1054 KeQueryMaximumGroupCount(VOID);
1055
1056 NTKERNELAPI
1057 KAFFINITY
1058 NTAPI
1059 KeQueryGroupAffinity(
1060 IN USHORT GroupNumber);
1061
1062 NTKERNELAPI
1063 ULONG
1064 NTAPI
1065 KeGetCurrentProcessorNumberEx(
1066 OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL);
1067
1068 NTKERNELAPI
1069 VOID
1070 NTAPI
1071 KeQueryNodeActiveAffinity(
1072 IN USHORT NodeNumber,
1073 OUT PGROUP_AFFINITY Affinity OPTIONAL,
1074 OUT PUSHORT Count OPTIONAL);
1075
1076 NTKERNELAPI
1077 USHORT
1078 NTAPI
1079 KeQueryNodeMaximumProcessorCount(
1080 IN USHORT NodeNumber);
1081
1082 NTKERNELAPI
1083 USHORT
1084 NTAPI
1085 KeQueryHighestNodeNumber(VOID);
1086
1087 NTKERNELAPI
1088 USHORT
1089 NTAPI
1090 KeGetCurrentNodeNumber(VOID);
1091
1092 NTKERNELAPI
1093 NTSTATUS
1094 NTAPI
1095 KeQueryLogicalProcessorRelationship(
1096 IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL,
1097 IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
1098 OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL,
1099 IN OUT PULONG Length);
1100
1101 NTKERNELAPI
1102 NTSTATUS
1103 NTAPI
1104 KeSaveExtendedProcessorState(
1105 IN ULONG64 Mask,
1106 OUT PXSTATE_SAVE XStateSave);
1107
1108 NTKERNELAPI
1109 VOID
1110 NTAPI
1111 KeRestoreExtendedProcessorState(
1112 IN PXSTATE_SAVE XStateSave);
1113
1114 NTSTATUS
1115 NTAPI
1116 KeGetProcessorNumberFromIndex(
1117 IN ULONG ProcIndex,
1118 OUT PPROCESSOR_NUMBER ProcNumber);
1119
1120 ULONG
1121 NTAPI
1122 KeGetProcessorIndexFromNumber(
1123 IN PPROCESSOR_NUMBER ProcNumber);
1124 $endif (_WDMDDK_)
1125 $if (_NTDDK_)
1126 NTKERNELAPI
1127 ULONG
1128 NTAPI
1129 KeQueryActiveProcessorCountEx(
1130 IN USHORT GroupNumber);
1131
1132 NTKERNELAPI
1133 ULONG
1134 NTAPI
1135 KeQueryMaximumProcessorCountEx(
1136 IN USHORT GroupNumber);
1137
1138 NTKERNELAPI
1139 USHORT
1140 NTAPI
1141 KeQueryActiveGroupCount(VOID);
1142
1143 NTKERNELAPI
1144 USHORT
1145 NTAPI
1146 KeQueryMaximumGroupCount(VOID);
1147
1148 NTKERNELAPI
1149 KAFFINITY
1150 NTAPI
1151 KeQueryGroupAffinity(
1152 IN USHORT GroupNumber);
1153
1154 NTKERNELAPI
1155 ULONG
1156 NTAPI
1157 KeGetCurrentProcessorNumberEx(
1158 OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL);
1159
1160 NTKERNELAPI
1161 VOID
1162 NTAPI
1163 KeQueryNodeActiveAffinity(
1164 IN USHORT NodeNumber,
1165 OUT PGROUP_AFFINITY Affinity OPTIONAL,
1166 OUT PUSHORT Count OPTIONAL);
1167
1168 NTKERNELAPI
1169 USHORT
1170 NTAPI
1171 KeQueryNodeMaximumProcessorCount(
1172 IN USHORT NodeNumber);
1173
1174 NTKERNELAPI
1175 USHORT
1176 NTAPI
1177 KeQueryHighestNodeNumber(VOID);
1178
1179 NTKERNELAPI
1180 USHORT
1181 NTAPI
1182 KeGetCurrentNodeNumber(VOID);
1183
1184 NTKERNELAPI
1185 NTSTATUS
1186 NTAPI
1187 KeQueryLogicalProcessorRelationship(
1188 IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL,
1189 IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
1190 OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL,
1191 IN OUT PULONG Length);
1192
1193 NTKERNELAPI
1194 NTSTATUS
1195 NTAPI
1196 KeSetHardwareCounterConfiguration(
1197 IN PHARDWARE_COUNTER CounterArray,
1198 IN ULONG Count);
1199
1200 NTKERNELAPI
1201 NTSTATUS
1202 NTAPI
1203 KeQueryHardwareCounterConfiguration(
1204 OUT PHARDWARE_COUNTER CounterArray,
1205 IN ULONG MaximumCount,
1206 OUT PULONG Count);
1207 $endif (_NTDDK_)
1208 $if (_WDMDDK_ || _NTDDK_)
1209 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
1210 $endif
1211 $if (_WDMDDK_)
1212 #if !defined(_IA64_)
1213 NTHALAPI
1214 VOID
1215 NTAPI
1216 KeFlushWriteBuffer(VOID);
1217 #endif
1218
1219 /* VOID
1220 * KeInitializeCallbackRecord(
1221 * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
1222 */
1223 #define KeInitializeCallbackRecord(CallbackRecord) \
1224 CallbackRecord->State = BufferEmpty;
1225
1226 #if DBG
1227
1228 #if (NTDDI_VERSION >= NTDDI_VISTA)
1229 #define PAGED_ASSERT( exp ) NT_ASSERT( exp )
1230 #else
1231 #define PAGED_ASSERT( exp ) ASSERT( exp )
1232 #endif
1233
1234 #define PAGED_CODE() { \
1235 if (KeGetCurrentIrql() > APC_LEVEL) { \
1236 KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
1237 PAGED_ASSERT(FALSE); \
1238 } \
1239 }
1240
1241 #else
1242
1243 #define PAGED_CODE()
1244
1245 #endif /* DBG */
1246
1247 #define PAGED_CODE_LOCKED() NOP_FUNCTION;
1248 $endif (_WDMDDK_)
1249