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