Ree*_*ril 2 windows device-driver irql
如何确定一段驱动程序代码的IRQL Level?PAGED_CODE() 宏指定该代码段可以在低于 DISPATCH_LEVEL 的 IRQL 级别上运行。但是如何确定确切的 IRQL 级别。
KeGetCurrentIrql函数返回当前的IRQL:
KIRQL KeGetCurrentIrql(void);
Run Code Online (Sandbox Code Playgroud)
PAGED_CODE宏通过以下方式使用该函数:
#define PAGED_CODE() \
if (KeGetCurrentIrql() > APC_LEVEL) { \
KdPrint(( "EX: Pageable code called at IRQL %d\n", KeGetCurrentIrql() )); \
ASSERT(FALSE); \
}
Run Code Online (Sandbox Code Playgroud)
该宏应放置在任何可分页函数中,如果在不允许分页的 IRQL 上调用该函数,则会导致驱动程序崩溃。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |