确定IRQL级别

时间:2015-03-11 05:24:21

标签: windows device-driver irql

如何确定一段驱动程序代码的IRQL级别。 PAGED_CODE()宏指定该代码段可以在低于DISPATCH_LEVEL的IRQL级别运行。但是,可以确定确切的IRQL级别。

1 个答案:

答案 0 :(得分:3)

KeGetCurrentIrql函数返回当前的IRQL:

KIRQL KeGetCurrentIrql(void);

PAGED_CODE宏通过以下方式使用此函数:

#define PAGED_CODE() \
    if (KeGetCurrentIrql() > APC_LEVEL) { \
        KdPrint(( "EX: Pageable code called at IRQL %d\n", KeGetCurrentIrql() )); \
        ASSERT(FALSE); \
    }

这个宏应放在任何可分页的函数中,如果在不允许分页的IRQL上调用该函数,它会崩溃驱动程序。