次の方法で共有


IRQL ルール セット (Storport)

これらのルールを使用して、ドライバーが必要な IRQL で DDI 呼び出しを行っているかを検証します。

IRQL ルールに従わないドライバーは、操作中に重大な問題を引き起こす可能性があり、デッドロック状態やコンピューターのクラッシュにつながる可能性があります。

このセクションの内容

裁判官 説明

IrqlDispatch

このルールでは、次のルーチンが IRQL = DISPATCH_LEVEL でのみ呼び出されていることが検証されます。

IrqlKeReleaseSpinLock

このルールでは、KeReleaseSpinLockIRQL = DISPATCH_LEVEL でのみ呼び出されていることが検証されます。 また、IRQL を以前の IRQL レベルに設定する必要があります。 通常、この呼び出しの前に KeAcquireSpinLock を呼び出します。

SpChangeIrql

このルールでは、StorPort コールバック ルーチンが呼び出されているレベルと同じ IRQL レベルで返していることが検証されます。

SpIrql

このルールでは、ルーチン TdiRegisterPnPHandlers および TdiDeregisterPnPHandlers が、DISPATCH_LEVEL より低い IRQL でのみ呼び出されていることが検証されます。 ただし、ExFreeToNPagedLookasideList が呼び出された場合は、ルールが渡されます。

StorPortIrql

StorPortIrql ルールでは、StorPort ルーチンが正しい IRQL レベルで呼び出されていることを確認します。

Irql ルール セットを選択するには

  1. Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライバー] メニューから [静的ドライバー検証ツールの起動...] をクリックします。

  2. [ルール] タブをクリックします。[ルール セット] で、[Irql] を選択します。

    Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、/check オプションで Irql.sdv を指定します。 次に例を示します。

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

    詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」を参照してください。