[PSDK]
[reactos.git] / include / xdk / kefuncs.h
1 /******************************************************************************
2 * Kernel Functions *
3 ******************************************************************************/
4
5 NTHALAPI
6 KIRQL
7 NTAPI
8 KeGetCurrentIrql(VOID);
9
10 NTKERNELAPI
11 VOID
12 NTAPI
13 KeInitializeEvent(
14 OUT PRKEVENT Event,
15 IN EVENT_TYPE Type,
16 IN BOOLEAN State);
17
18 NTKERNELAPI
19 VOID
20 NTAPI
21 KeClearEvent(
22 IN OUT PRKEVENT Event);
23
24 #if (NTDDI_VERSION >= NTDDI_WIN2K)
25
26 #if defined(_NTDDK_) || defined(_NTIFS_)
27 NTKERNELAPI
28 VOID
29 NTAPI
30 ProbeForRead(
31 IN CONST VOID *Address, /* CONST is added */
32 IN SIZE_T Length,
33 IN ULONG Alignment);
34 #endif /* defined(_NTDDK_) || defined(_NTIFS_) */
35
36 NTKERNELAPI
37 VOID
38 NTAPI
39 ProbeForWrite(
40 IN PVOID Address,
41 IN SIZE_T Length,
42 IN ULONG Alignment);
43
44 #if defined(SINGLE_GROUP_LEGACY_API)
45 NTKERNELAPI
46 VOID
47 NTAPI
48 KeRevertToUserAffinityThread(VOID);
49
50 NTKERNELAPI
51 VOID
52 NTAPI
53 KeSetSystemAffinityThread(
54 IN KAFFINITY Affinity);
55
56 NTKERNELAPI
57 VOID
58 NTAPI
59 KeSetTargetProcessorDpc(
60 IN OUT PRKDPC Dpc,
61 IN CCHAR Number);
62
63 NTKERNELAPI
64 KAFFINITY
65 NTAPI
66 KeQueryActiveProcessors(VOID);
67 #endif
68
69 #if !defined(_M_AMD64)
70
71 NTKERNELAPI
72 ULONGLONG
73 NTAPI
74 KeQueryInterruptTime(VOID);
75
76 NTKERNELAPI
77 VOID
78 NTAPI
79 KeQuerySystemTime(
80 OUT PLARGE_INTEGER CurrentTime);
81
82 #endif /* !_M_AMD64 */
83
84 #if defined(_X86_) && (defined(_WDM_INCLUDED_) || defined(WIN9X_COMPAT_SPINLOCK))
85 NTKERNELAPI
86 VOID
87 NTAPI
88 KeInitializeSpinLock(
89 IN PKSPIN_LOCK SpinLock);
90 #else
91 FORCEINLINE
92 VOID
93 KeInitializeSpinLock(IN PKSPIN_LOCK SpinLock)
94 {
95 /* Clear the lock */
96 *SpinLock = 0;
97 }
98 #endif
99
100 NTKERNELAPI
101 DECLSPEC_NORETURN
102 VOID
103 NTAPI
104 KeBugCheckEx(
105 IN ULONG BugCheckCode,
106 IN ULONG_PTR BugCheckParameter1,
107 IN ULONG_PTR BugCheckParameter2,
108 IN ULONG_PTR BugCheckParameter3,
109 IN ULONG_PTR BugCheckParameter4);
110
111 NTKERNELAPI
112 BOOLEAN
113 NTAPI
114 KeCancelTimer(
115 IN OUT PKTIMER);
116
117 NTKERNELAPI
118 NTSTATUS
119 NTAPI
120 KeDelayExecutionThread(
121 IN KPROCESSOR_MODE WaitMode,
122 IN BOOLEAN Alertable,
123 IN PLARGE_INTEGER Interval);
124
125 NTKERNELAPI
126 BOOLEAN
127 NTAPI
128 KeDeregisterBugCheckCallback(
129 IN OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
130
131 NTKERNELAPI
132 VOID
133 NTAPI
134 KeEnterCriticalRegion(VOID);
135
136 NTKERNELAPI
137 VOID
138 NTAPI
139 KeInitializeDeviceQueue(
140 OUT PKDEVICE_QUEUE DeviceQueue);
141
142 NTKERNELAPI
143 VOID
144 NTAPI
145 KeInitializeDpc(
146 OUT PRKDPC Dpc,
147 IN PKDEFERRED_ROUTINE DeferredRoutine,
148 IN PVOID DeferredContext OPTIONAL);
149
150 NTKERNELAPI
151 VOID
152 NTAPI
153 KeInitializeMutex(
154 OUT PRKMUTEX Mutex,
155 IN ULONG Level);
156
157 NTKERNELAPI
158 VOID
159 NTAPI
160 KeInitializeSemaphore(
161 OUT PRKSEMAPHORE Semaphore,
162 IN LONG Count,
163 IN LONG Limit);
164
165 NTKERNELAPI
166 VOID
167 NTAPI
168 KeInitializeTimer(
169 OUT PKTIMER Timer);
170
171 NTKERNELAPI
172 VOID
173 NTAPI
174 KeInitializeTimerEx(
175 OUT PKTIMER Timer,
176 IN TIMER_TYPE Type);
177
178 NTKERNELAPI
179 BOOLEAN
180 NTAPI
181 KeInsertByKeyDeviceQueue(
182 IN OUT PKDEVICE_QUEUE DeviceQueue,
183 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
184 IN ULONG SortKey);
185
186 NTKERNELAPI
187 BOOLEAN
188 NTAPI
189 KeInsertDeviceQueue(
190 IN OUT PKDEVICE_QUEUE DeviceQueue,
191 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
192
193 NTKERNELAPI
194 BOOLEAN
195 NTAPI
196 KeInsertQueueDpc(
197 IN OUT PRKDPC Dpc,
198 IN PVOID SystemArgument1 OPTIONAL,
199 IN PVOID SystemArgument2 OPTIONAL);
200
201 NTKERNELAPI
202 VOID
203 NTAPI
204 KeLeaveCriticalRegion(VOID);
205
206 NTHALAPI
207 LARGE_INTEGER
208 NTAPI
209 KeQueryPerformanceCounter(
210 OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL);
211
212 NTKERNELAPI
213 KPRIORITY
214 NTAPI
215 KeQueryPriorityThread(
216 IN PRKTHREAD Thread);
217
218 NTKERNELAPI
219 ULONG
220 NTAPI
221 KeQueryTimeIncrement(VOID);
222
223 NTKERNELAPI
224 LONG
225 NTAPI
226 KeReadStateEvent(
227 IN PRKEVENT Event);
228
229 NTKERNELAPI
230 LONG
231 NTAPI
232 KeReadStateMutex(
233 IN PRKMUTEX Mutex);
234
235 NTKERNELAPI
236 LONG
237 NTAPI
238 KeReadStateSemaphore(
239 IN PRKSEMAPHORE Semaphore);
240
241 NTKERNELAPI
242 BOOLEAN
243 NTAPI
244 KeReadStateTimer(
245 IN PKTIMER Timer);
246
247 NTKERNELAPI
248 BOOLEAN
249 NTAPI
250 KeRegisterBugCheckCallback(
251 OUT PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
252 IN PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
253 IN PVOID Buffer,
254 IN ULONG Length,
255 IN PUCHAR Component);
256
257 NTKERNELAPI
258 LONG
259 NTAPI
260 KeReleaseMutex(
261 IN OUT PRKMUTEX Mutex,
262 IN BOOLEAN Wait);
263
264 NTKERNELAPI
265 LONG
266 NTAPI
267 KeReleaseSemaphore(
268 IN OUT PRKSEMAPHORE Semaphore,
269 IN KPRIORITY Increment,
270 IN LONG Adjustment,
271 IN BOOLEAN Wait);
272
273 NTKERNELAPI
274 PKDEVICE_QUEUE_ENTRY
275 NTAPI
276 KeRemoveByKeyDeviceQueue(
277 IN OUT PKDEVICE_QUEUE DeviceQueue,
278 IN ULONG SortKey);
279
280 NTKERNELAPI
281 PKDEVICE_QUEUE_ENTRY
282 NTAPI
283 KeRemoveDeviceQueue(
284 IN OUT PKDEVICE_QUEUE DeviceQueue);
285
286 NTKERNELAPI
287 BOOLEAN
288 NTAPI
289 KeRemoveEntryDeviceQueue(
290 IN OUT PKDEVICE_QUEUE DeviceQueue,
291 IN OUT PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
292
293 NTKERNELAPI
294 BOOLEAN
295 NTAPI
296 KeRemoveQueueDpc(
297 IN OUT PRKDPC Dpc);
298
299 NTKERNELAPI
300 LONG
301 NTAPI
302 KeResetEvent(
303 IN OUT PRKEVENT Event);
304
305 NTKERNELAPI
306 LONG
307 NTAPI
308 KeSetEvent(
309 IN OUT PRKEVENT Event,
310 IN KPRIORITY Increment,
311 IN BOOLEAN Wait);
312
313 NTKERNELAPI
314 VOID
315 NTAPI
316 KeSetImportanceDpc(
317 IN OUT PRKDPC Dpc,
318 IN KDPC_IMPORTANCE Importance);
319
320 NTKERNELAPI
321 KPRIORITY
322 NTAPI
323 KeSetPriorityThread(
324 IN OUT PKTHREAD Thread,
325 IN KPRIORITY Priority);
326
327 NTKERNELAPI
328 BOOLEAN
329 NTAPI
330 KeSetTimer(
331 IN OUT PKTIMER Timer,
332 IN LARGE_INTEGER DueTime,
333 IN PKDPC Dpc OPTIONAL);
334
335 NTKERNELAPI
336 BOOLEAN
337 NTAPI
338 KeSetTimerEx(
339 IN OUT PKTIMER Timer,
340 IN LARGE_INTEGER DueTime,
341 IN LONG Period OPTIONAL,
342 IN PKDPC Dpc OPTIONAL);
343
344 NTHALAPI
345 VOID
346 NTAPI
347 KeStallExecutionProcessor(
348 IN ULONG MicroSeconds);
349
350 NTKERNELAPI
351 BOOLEAN
352 NTAPI
353 KeSynchronizeExecution(
354 IN OUT PKINTERRUPT Interrupt,
355 IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
356 IN PVOID SynchronizeContext OPTIONAL);
357
358 NTKERNELAPI
359 NTSTATUS
360 NTAPI
361 KeWaitForMultipleObjects(
362 IN ULONG Count,
363 IN PVOID Object[],
364 IN WAIT_TYPE WaitType,
365 IN KWAIT_REASON WaitReason,
366 IN KPROCESSOR_MODE WaitMode,
367 IN BOOLEAN Alertable,
368 IN PLARGE_INTEGER Timeout OPTIONAL,
369 OUT PKWAIT_BLOCK WaitBlockArray OPTIONAL);
370
371 #define KeWaitForMutexObject KeWaitForSingleObject
372
373 NTKERNELAPI
374 NTSTATUS
375 NTAPI
376 KeWaitForSingleObject(
377 IN PVOID Object,
378 IN KWAIT_REASON WaitReason,
379 IN KPROCESSOR_MODE WaitMode,
380 IN BOOLEAN Alertable,
381 IN PLARGE_INTEGER Timeout OPTIONAL);
382
383 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
384
385 #if (NTDDI_VERSION >= NTDDI_WINXP)
386
387 _DECL_HAL_KE_IMPORT
388 VOID
389 FASTCALL
390 KeAcquireInStackQueuedSpinLock(
391 IN OUT PKSPIN_LOCK SpinLock,
392 OUT PKLOCK_QUEUE_HANDLE LockHandle);
393
394 NTKERNELAPI
395 VOID
396 FASTCALL
397 KeAcquireInStackQueuedSpinLockAtDpcLevel(
398 IN OUT PKSPIN_LOCK SpinLock,
399 OUT PKLOCK_QUEUE_HANDLE LockHandle);
400
401 NTKERNELAPI
402 KIRQL
403 NTAPI
404 KeAcquireInterruptSpinLock(
405 IN OUT PKINTERRUPT Interrupt);
406
407 NTKERNELAPI
408 BOOLEAN
409 NTAPI
410 KeAreApcsDisabled(VOID);
411
412 NTKERNELAPI
413 ULONG
414 NTAPI
415 KeGetRecommendedSharedDataAlignment(VOID);
416
417 NTKERNELAPI
418 ULONG
419 NTAPI
420 KeQueryRuntimeThread(
421 IN PKTHREAD Thread,
422 OUT PULONG UserTime);
423
424 NTKERNELAPI
425 VOID
426 FASTCALL
427 KeReleaseInStackQueuedSpinLockFromDpcLevel(
428 IN PKLOCK_QUEUE_HANDLE LockHandle);
429
430 NTKERNELAPI
431 VOID
432 NTAPI
433 KeReleaseInterruptSpinLock(
434 IN OUT PKINTERRUPT Interrupt,
435 IN KIRQL OldIrql);
436
437 NTKERNELAPI
438 PKDEVICE_QUEUE_ENTRY
439 NTAPI
440 KeRemoveByKeyDeviceQueueIfBusy(
441 IN OUT PKDEVICE_QUEUE DeviceQueue,
442 IN ULONG SortKey);
443
444 _DECL_HAL_KE_IMPORT
445 VOID
446 FASTCALL
447 KeReleaseInStackQueuedSpinLock(
448 IN PKLOCK_QUEUE_HANDLE LockHandle);
449
450 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
451
452 #if (NTDDI_VERSION >= NTDDI_WINXPSP1)
453
454 NTKERNELAPI
455 BOOLEAN
456 NTAPI
457 KeDeregisterBugCheckReasonCallback(
458 IN OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord);
459
460 NTKERNELAPI
461 BOOLEAN
462 NTAPI
463 KeRegisterBugCheckReasonCallback(
464 OUT PKBUGCHECK_REASON_CALLBACK_RECORD CallbackRecord,
465 IN PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine,
466 IN KBUGCHECK_CALLBACK_REASON Reason,
467 IN PUCHAR Component);
468
469 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP1) */
470
471 #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
472 NTKERNELAPI
473 VOID
474 NTAPI
475 KeFlushQueuedDpcs(VOID);
476 #endif /* (NTDDI_VERSION >= NTDDI_WINXPSP2) */
477
478 #if (NTDDI_VERSION >= NTDDI_WS03)
479
480 NTKERNELAPI
481 PVOID
482 NTAPI
483 KeRegisterNmiCallback(
484 IN PNMI_CALLBACK CallbackRoutine,
485 IN PVOID Context OPTIONAL);
486
487 NTKERNELAPI
488 NTSTATUS
489 NTAPI
490 KeDeregisterNmiCallback(
491 IN PVOID Handle);
492
493 NTKERNELAPI
494 VOID
495 NTAPI
496 KeInitializeThreadedDpc(
497 OUT PRKDPC Dpc,
498 IN PKDEFERRED_ROUTINE DeferredRoutine,
499 IN PVOID DeferredContext OPTIONAL);
500
501 NTKERNELAPI
502 ULONG_PTR
503 NTAPI
504 KeIpiGenericCall(
505 IN PKIPI_BROADCAST_WORKER BroadcastFunction,
506 IN ULONG_PTR Context);
507
508 NTKERNELAPI
509 KIRQL
510 FASTCALL
511 KeAcquireSpinLockForDpc(
512 IN OUT PKSPIN_LOCK SpinLock);
513
514 NTKERNELAPI
515 VOID
516 FASTCALL
517 KeReleaseSpinLockForDpc(
518 IN OUT PKSPIN_LOCK SpinLock,
519 IN KIRQL OldIrql);
520
521 NTKERNELAPI
522 BOOLEAN
523 FASTCALL
524 KeTestSpinLock(
525 IN PKSPIN_LOCK SpinLock);
526
527 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
528
529 #if (NTDDI_VERSION >= NTDDI_WS03SP1)
530
531 NTKERNELAPI
532 BOOLEAN
533 FASTCALL
534 KeTryToAcquireSpinLockAtDpcLevel(
535 IN OUT PKSPIN_LOCK SpinLock);
536
537 NTKERNELAPI
538 BOOLEAN
539 NTAPI
540 KeAreAllApcsDisabled(VOID);
541
542 NTKERNELAPI
543 VOID
544 FASTCALL
545 KeAcquireGuardedMutex(
546 IN OUT PKGUARDED_MUTEX GuardedMutex);
547
548 NTKERNELAPI
549 VOID
550 FASTCALL
551 KeAcquireGuardedMutexUnsafe(
552 IN OUT PKGUARDED_MUTEX GuardedMutex);
553
554 NTKERNELAPI
555 VOID
556 NTAPI
557 KeEnterGuardedRegion(VOID);
558
559 NTKERNELAPI
560 VOID
561 NTAPI
562 KeLeaveGuardedRegion(VOID);
563
564 NTKERNELAPI
565 VOID
566 FASTCALL
567 KeInitializeGuardedMutex(
568 OUT PKGUARDED_MUTEX GuardedMutex);
569
570 NTKERNELAPI
571 VOID
572 FASTCALL
573 KeReleaseGuardedMutexUnsafe(
574 IN OUT PKGUARDED_MUTEX GuardedMutex);
575
576 NTKERNELAPI
577 VOID
578 FASTCALL
579 KeReleaseGuardedMutex(
580 IN OUT PKGUARDED_MUTEX GuardedMutex);
581
582 NTKERNELAPI
583 BOOLEAN
584 FASTCALL
585 KeTryToAcquireGuardedMutex(
586 IN OUT PKGUARDED_MUTEX GuardedMutex);
587
588 #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
589
590 #if (NTDDI_VERSION >= NTDDI_VISTA)
591
592 NTKERNELAPI
593 VOID
594 FASTCALL
595 KeAcquireInStackQueuedSpinLockForDpc(
596 IN OUT PKSPIN_LOCK SpinLock,
597 OUT PKLOCK_QUEUE_HANDLE LockHandle);
598
599 NTKERNELAPI
600 VOID
601 FASTCALL
602 KeReleaseInStackQueuedSpinLockForDpc(
603 IN PKLOCK_QUEUE_HANDLE LockHandle);
604
605 NTKERNELAPI
606 NTSTATUS
607 NTAPI
608 KeQueryDpcWatchdogInformation(
609 OUT PKDPC_WATCHDOG_INFORMATION WatchdogInformation);
610
611 #if defined(SINGLE_GROUP_LEGACY_API)
612 NTKERNELAPI
613 KAFFINITY
614 NTAPI
615 KeSetSystemAffinityThreadEx(
616 IN KAFFINITY Affinity);
617
618 NTKERNELAPI
619 VOID
620 NTAPI
621 KeRevertToUserAffinityThreadEx(
622 IN KAFFINITY Affinity);
623
624 NTKERNELAPI
625 ULONG
626 NTAPI
627 KeQueryActiveProcessorCount(
628 OUT PKAFFINITY ActiveProcessors OPTIONAL);
629
630 NTKERNELAPI
631 ULONG
632 NTAPI
633 KeQueryMaximumProcessorCount(VOID);
634 #endif
635
636 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
637
638 #if (NTDDI_VERSION >= NTDDI_WS08)
639
640 PVOID
641 KeRegisterProcessorChangeCallback(
642 IN PPROCESSOR_CALLBACK_FUNCTION CallbackFunction,
643 IN PVOID CallbackContext OPTIONAL,
644 IN ULONG Flags);
645
646 VOID
647 KeDeregisterProcessorChangeCallback(
648 IN PVOID CallbackHandle);
649
650 #endif /* (NTDDI_VERSION >= NTDDI_WS08) */
651
652 #if (NTDDI_VERSION >= NTDDI_WIN7)
653
654 ULONG64
655 NTAPI
656 KeQueryTotalCycleTimeProcess(
657 IN OUT PKPROCESS Process,
658 OUT PULONG64 CycleTimeStamp);
659
660 ULONG64
661 NTAPI
662 KeQueryTotalCycleTimeThread(
663 IN OUT PKTHREAD Thread,
664 OUT PULONG64 CycleTimeStamp);
665
666 NTKERNELAPI
667 NTSTATUS
668 NTAPI
669 KeSetTargetProcessorDpcEx(
670 IN OUT PKDPC Dpc,
671 IN PPROCESSOR_NUMBER ProcNumber);
672
673 NTKERNELAPI
674 VOID
675 NTAPI
676 KeSetSystemGroupAffinityThread(
677 IN PGROUP_AFFINITY Affinity,
678 OUT PGROUP_AFFINITY PreviousAffinity OPTIONAL);
679
680 NTKERNELAPI
681 VOID
682 NTAPI
683 KeRevertToUserGroupAffinityThread(
684 IN PGROUP_AFFINITY PreviousAffinity);
685
686 NTKERNELAPI
687 BOOLEAN
688 NTAPI
689 KeSetCoalescableTimer(
690 IN OUT PKTIMER Timer,
691 IN LARGE_INTEGER DueTime,
692 IN ULONG Period,
693 IN ULONG TolerableDelay,
694 IN PKDPC Dpc OPTIONAL);
695
696 NTKERNELAPI
697 ULONGLONG
698 NTAPI
699 KeQueryUnbiasedInterruptTime(VOID);
700
701 NTKERNELAPI
702 ULONG
703 NTAPI
704 KeQueryActiveProcessorCountEx(
705 IN USHORT GroupNumber);
706
707 NTKERNELAPI
708 ULONG
709 NTAPI
710 KeQueryMaximumProcessorCountEx(
711 IN USHORT GroupNumber);
712
713 NTKERNELAPI
714 USHORT
715 NTAPI
716 KeQueryActiveGroupCount(VOID);
717
718 NTKERNELAPI
719 USHORT
720 NTAPI
721 KeQueryMaximumGroupCount(VOID);
722
723 NTKERNELAPI
724 KAFFINITY
725 NTAPI
726 KeQueryGroupAffinity(
727 IN USHORT GroupNumber);
728
729 NTKERNELAPI
730 ULONG
731 NTAPI
732 KeGetCurrentProcessorNumberEx(
733 OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL);
734
735 NTKERNELAPI
736 VOID
737 NTAPI
738 KeQueryNodeActiveAffinity(
739 IN USHORT NodeNumber,
740 OUT PGROUP_AFFINITY Affinity OPTIONAL,
741 OUT PUSHORT Count OPTIONAL);
742
743 NTKERNELAPI
744 USHORT
745 NTAPI
746 KeQueryNodeMaximumProcessorCount(
747 IN USHORT NodeNumber);
748
749 NTKERNELAPI
750 USHORT
751 NTAPI
752 KeQueryHighestNodeNumber(VOID);
753
754 NTKERNELAPI
755 USHORT
756 NTAPI
757 KeGetCurrentNodeNumber(VOID);
758
759 NTKERNELAPI
760 NTSTATUS
761 NTAPI
762 KeQueryLogicalProcessorRelationship(
763 IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL,
764 IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
765 OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL,
766 IN OUT PULONG Length);
767
768 NTKERNELAPI
769 NTSTATUS
770 NTAPI
771 KeSaveExtendedProcessorState(
772 IN ULONG64 Mask,
773 OUT PXSTATE_SAVE XStateSave);
774
775 NTKERNELAPI
776 VOID
777 NTAPI
778 KeRestoreExtendedProcessorState(
779 IN PXSTATE_SAVE XStateSave);
780
781 NTSTATUS
782 NTAPI
783 KeGetProcessorNumberFromIndex(
784 IN ULONG ProcIndex,
785 OUT PPROCESSOR_NUMBER ProcNumber);
786
787 ULONG
788 NTAPI
789 KeGetProcessorIndexFromNumber(
790 IN PPROCESSOR_NUMBER ProcNumber);
791
792 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
793
794 #if !defined(_IA64_)
795 NTHALAPI
796 VOID
797 NTAPI
798 KeFlushWriteBuffer(VOID);
799 #endif
800
801 /* VOID
802 * KeInitializeCallbackRecord(
803 * IN PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
804 */
805 #define KeInitializeCallbackRecord(CallbackRecord) \
806 CallbackRecord->State = BufferEmpty;
807
808 #if DBG
809
810 #if (NTDDI_VERSION >= NTDDI_VISTA)
811 #define PAGED_ASSERT( exp ) NT_ASSERT( exp )
812 #else
813 #define PAGED_ASSERT( exp ) ASSERT( exp )
814 #endif
815
816 #define PAGED_CODE() { \
817 if (KeGetCurrentIrql() > APC_LEVEL) { \
818 KdPrint( ("NTDDK: Pageable code called at IRQL > APC_LEVEL (%d)\n", KeGetCurrentIrql() )); \
819 PAGED_ASSERT(FALSE); \
820 } \
821 }
822
823 #else
824
825 #define PAGED_CODE()
826
827 #endif /* DBG */
828
829 #define PAGED_CODE_LOCKED() NOP_FUNCTION;
830