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