SrbProcessing の規則セット (Storport)
これらの規則を使用して、ドライバーが SRB 要求を正しく処理することを検証します。
このセクションの内容
トピック | 説明 |
---|---|
この規則では、このミニポートが全二重 モードであることが検証されます。 StorPort-miniport モデルに従ってビルドされたドライバーは、全二重モードであることが検証されます。 半二重 は、既存の SCSI ドライバーを StorPort に移行する場合にのみ使用します。 |
|
この規則では、StartIo内で待機またはデータの割り当てが実行されていないことが検証されます。 |
|
この規則では、HwStorFindAdapter および VirtualHwStorFindAdapter のドライバーの実装が有効な状態を返すことが検証されます。 有効な状態は、SP_RETURN_FOUND、SP_RETURN_ERROR、SP_RETURN_BAD_CONFIG、SP_RETURN_NOT_FOUNDのいずれかの状態です。 |
|
この規則は、ミニポートが割り当て解除されたバッファーで StorPortFreePool を呼び出そうとしてはならないことを確認します。 |
|
この規則は、ミニポートが最初に割り当てを解除せずに、割り当てられたバッファーで StorPortAllocatePool の呼び出しの試行が許可されないことを確認します。 |
|
この規則では、StorPort ミニポートの StorPortBuildIo ルーチンが FALSE を返した場合、問題の SRB が StartIo に渡されないことが検証されます。 (このような場合、ミニポート ドライバーは、StorPortBuildIo または他の場所から RequestComplete という通知の種類で StorPortNotification を呼び出して SRB を完了する必要があります)。 |
|
この規則では、ミニポートからの StorPortCompleteRequest の呼び出しがないことが検証されます。 StorPortCompleteRequest の使用は推奨されません。つまり、ミニポートは notificationType = RequestComplete で StorPortNotification を呼び出す必要があります。 |
|
この規則では、StorPortEnablePassiveInitialization が HwInitialize 以外のいずれの StorPort ミニポート ドライバー ルーチンからも呼び出されていないことが検証されます。 |
|
HwStorFindAdapter ルーチンは、PORT_CONFIGURATION_INFORMATION 構造体の MaximumTransferLength フィールドと NumberOfPhysicalBreaks フィールドを設定する必要があります。 デフォルトでは、これらの両方のフィールドの値は SP_UNINITIALIZED_VALUEです。 FindAdapter の終了時に、これらのフィールドのいずれかが SP_UNINITIALIZED_VALUE に設定されている場合は、ドライバーはこの規則に従いません。 |
|
この規則では、StorPortNotification への呼び出しで許可された (文書化済みなど) 通知タイプのみを使用していることが検証されます。 |
|
HW 初期化エントリ ポイントを HW アダプター制御エントリ ポイントから直接呼び出す場合は、Storport ドライバーの HW 初期化エントリ ポイント内で StorPortEnablePassiveInitialization を呼び出すことはできません。 |
|
この規則では、StorPortInitializePerfOpts に渡される PerfConfigData パラメーターが NULL でないことが検証されます。 |
|
待機またはデータの割り当ては、ミニポートの StartIo ルーチンで実行することはできません。 StorPortStallExecution または時間のかかる操作を伴う別の関数を呼び出した場合、ドライバーはこの規則に従いません。 StartIo は同期されるため、これらの呼び出しは、主に BuildIoで行う必要があります。 |
|
StorPortNotification(RequestTimerCall) を呼び出す場合、HW_TIMER ルーチンを定義する必要があります。 |
SrbProcessing 規則セットを選択するには
Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライブ] メニューから [スタティック ドライバー ベリファイアを起動] をクリックします。
Rules タブをクリックします。Rule Sets で、SrbProcessing を選択します。
Visual Studio の開発者コマンド プロンプト ウィンドウから既定の規則セットを選択するには、/check オプションで SrbProcessing.sdv を指定します。 次に例を示します。
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
詳細については、「静的ドライバー検証ツールを使用して、ドライバーの欠陥を検出する」と「静的ドライバー検証ツールコマンド (MSBuild)」をご参照ください。