VirtualStorport の規則セット (Storport)
これらの規則を使用して、ドライバーが Storport 仮想ミニポート (VMiniport) ドライバーに特に関心のある DDI を正しく呼び出していることを確認します。
このセクションの内容
裁判官 | 説明 |
---|---|
このルールでは、ドライバーがプール メモリの同じブロックを 2 回解放しようとしないことが検証されます。 |
|
このルールでは、KeSetEvent が同じイベント オブジェクトで 2 回呼び出されないことを確認します。 同じイベント オブジェクトがルーチンに渡された場合、ドライバーはこのルールに失敗します。 |
|
このルールでは、IoAllocateIrpによって割り当てられた IRP がIoFreeIrp によって解放されるか、その完了ルーチンが IoSetCompletionRoutineによって設定されることを確認します。 |
|
このルールでは、 HwStorFindAdapter ルーチンを終了すると、PORT_CONFIGURATION_INFORMATION (Storport) 構造体の VirtualDevice フィールドが FALSE に設定されていることが検証されます。 このルールは、物理 StorPort ミニポートにのみ適用されます。 |
|
このルールでは、HwStorFindAdapter ルーチンを終了すると、PORT_CONFIGURATION_INFORMATION (Storport) 構造体の VirtualDevice フィールドが TRUEに設定されていることが検証されます。 このルールは、物理 StorPort ミニポートにのみ適用されます。 |
|
このルールでは、特定の同期関数へのドライバーの呼び出しが、通常のカーネル APC 配信が無効になっている間にのみ行われていることが検証されます。 |
|
このルールは、ZwCreateKey で作成されたレジストリ キーへのハンドルが、その後、他の ZwXxxルーチンによって正しく使用されていることを確認します。 すでに開いているハンドルで、ZwOpenKey ルーチンを呼び出すことはできません。 ZwEnumerateKey、ZwEnumerateValueKey、ZwFlushKey、ZwQueryKey、ZwQueryValueKey、ZwSetValueKey、ZwClose、ZwDeleteKey ルーチンは、開いていないハンドルで呼び出すことはできません。 また、戻る前にハンドルを閉じる必要があります。 |
|
このルールは、ZwOpenKey を使用して開かれたレジストリ キーへのハンドルが、その後、他の ZwXxx ルーチンによって正しく使用されていることを確認します。 ZwEnumerateKey、ZwEnumerateValueKey、ZwFlushKey、ZwQueryKey、ZwQueryValueKey、ZwSetValueKey, ZwClose、ZwDeleteKey ルーチンは、開いていないハンドルで呼び出すことはできません。 また、戻る前にハンドルを閉じる必要があります。 |
VirtualStorport ルール セットを選択するには
Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 Driver メニューから Launch Static Driver Verifier… をクリックします。
Rules タブをクリックします。Rule Sets で、VirtualStorport を選択します。
Visual Studio の開発者コマンド プロンプト ウィンドウから既定のルール セットを選択するには、/check オプションで VirtualStorport.sdv を指定します。 次に例を示します。
msbuild /t:sdv /p:Inputs="/check:VirtualStorport.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」を参照してください。