使用这些规则验证驱动程序是否在所需的 IRQL 上发出 DDI 调用。
不符合 IRQL 规则的驱动程序可能会导致作过程中出现严重问题,从而导致死锁条件或计算机崩溃。
本部分内容
| 主题 | DESCRIPTION |
|---|---|
Flags_Irql规则指定,在具有指示当前 IRQL 的调度级别标志参数的回调函数中,不得调用 KeGetCurrentIrql。 正确使用调度级别标志有助于避免不必要的尝试设置 IRQL。 有关如何使用此标志的详细信息,请参阅 Dispatch IRQL Tracking。 |
|
Irql_CallManager_Function规则指定必须在正确的 IRQL 级别调用 NDIS CallManager 的 NDIS 函数。 |
|
Irql_Connection_Function规则指定必须在正确的 IRQL 级别调用协议驱动程序的 NDIS 连接函数。 |
|
Irql_Filter_Driver_Function规则指定必须在正确的 IRQL 级别调用筛选器驱动程序的 NDIS 函数。 |
|
Irql_Gather_DMA_Function规则指定必须在正确的 IRQL 级别调用 NDIS 散点/收集 DMA 函数。 |
|
Irql_IM_Function 规则规定必须在正确的 IRQL 级别上调用中间驱动程序 (IM) 的 NDIS 函数。 |
|
Irql_Interfaces_Function规则指定必须在正确的 IRQL 级别调用 NDIS 网络接口函数。 |
|
Irql_Interrupt_Function规则规定,必须在正确的IRQL级别调用与中断相关的NDIS函数。 |
|
Irql_IrqlSetting_Function规则指定必须在正确的 IRQL 级别调用 NDIS 中断宏。 |
|
Irql_MCM_Function规则指定必须在正确的 IRQL 级别调用驱动程序的 NDIS MCM 函数。 |
|
Irql_MCO_Function规则指定必须在正确的 IRQL 级别调用微型端口驱动程序的 NDIS MCO DDI。 |
|
Irql_Miniport_Driver_Function规则指定必须在正确的 IRQL 级别调用微型端口驱动程序的 NDIS 函数。 |
|
Irql_Miscellaneous_Function规则指定必须在正确的 IRQL 级别调用 NDIS 函数。 |
|
Irql_NetBuffer_Function规则指定必须在正确的 IRQL 级别调用NET_BUFFER相关函数。 |
|
Irql_OID_Function规则规定,必须在正确的IRQL级别上调用NDIS OID请求的DDIs。 |
|
Irql_Protocol_Driver_Function规则指定必须在正确的 IRQL 级别调用 CoNDIS 客户端的 NDIS 函数。 |
|
Irql_SendRcv_Function规则指定必须在正确的 IRQL 级别调用 NDIS 驱动程序的发送和接收函数。 |
|
Irql_StatusIndication_Function规则指定必须在正确的 IRQL 级别调用微型端口和筛选器驱动程序的 NDIS 状态指示函数。 |
|
Irql_Synch_Function规则指定必须在正确的 IRQL 级别调用 NDIS 中断和同步 DDI。 |
|
Irql_Timer_Function规则指定必须在正确的 IRQL 级别调用 NDIS 计时器服务函数。 |
选择 Irql 规则集
在 Microsoft Visual Studio 中选择你的驱动程序项目(.vcxProj)。 在 “驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”。
单击“ 规则 ”选项卡。在 “规则集”下,选择 “Irql”。
若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /check 选项指定 Irql.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:Irql.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32有关详细信息,请参阅使用静态驱动程序验证程序查找驱动程序和静态驱动程序验证程序命令中的缺陷(MSBuild)。