storport) (IRQL 规则集

使用这些规则验证驱动程序是否在所需的 IRQL 上发出 DDI 调用。

不遵循 IRQL 规则的驱动程序在操作期间可能会导致严重问题,从而导致死锁情况或计算机崩溃。

在本节中

主题 说明

IrqlDispatch

此规则验证是否仅在 IRQL = DISPATCH_LEVEL调用以下例程。

IrqlKeReleaseSpinLock

此规则验证仅在 IRQL = DISPATCH_LEVEL 调用 KeReleaseSpinLock。 它还必须将 IRQL 设置为以前的 IRQL 级别。 通常,此调用之前会调用 KeAcquireSpinLock

SpChangeIrql

此规则验证 StorPort 回调例程是否以调用它们的相同 IRQL 级别返回。

SpIrql

此规则验证例程 TdiRegisterPnPHandlersTdiDeregisterPnPHandlers 仅在低于 DISPATCH_LEVEL 的 IRQL 下调用。 但是,如果调用 ExFreeToNPagedLookasideList ,则规则会传递。

StorPortIrql

StorPortIrql 规则检查是否在正确的 IRQL 级别调用 StorPort 例程。

选择 Irql 规则集

  1. 在 Microsoft Visual Studio 中选择驱动程序项目 (.vcxProj) 。 在“ 驱动程序 ”菜单中,单击“ 启动静态驱动程序验证程序...”

  2. 单击“ 规则 ”选项卡。在 “规则集”下,选择“ Irql”。

    若要从 Visual Studio 开发人员命令提示符窗口中选择默认规则集,请使用 /检查 选项指定 Irql.sdv。 例如:

    msbuild /t:sdv /p:Inputs="/check:Irql.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    有关详细信息,请参阅 使用静态驱动程序验证程序查找驱动程序中的缺陷静态驱动程序验证程序命令 (MSBuild)