次の方法で共有


SrbProcessing の規則セット (Storport)

これらの規則を使用して、ドライバーが SRB 要求を正しく処理することを検証します。

このセクションの内容

トピック 説明

SpDuplex

この規則では、このミニポートが全二重 モードであることが検証されます。 StorPort-miniport モデルに従ってビルドされたドライバーは、全二重モードであることが検証されます。 半二重 は、既存の SCSI ドライバーを StorPort に移行する場合にのみ使用します。

SpNoWait

この規則では、StartIo内で待機またはデータの割り当てが実行されていないことが検証されます。

SpReturnValue

この規則では、HwStorFindAdapter および VirtualHwStorFindAdapter のドライバーの実装が有効な状態を返すことが検証されます。 有効な状態は、SP_RETURN_FOUNDSP_RETURN_ERRORSP_RETURN_BAD_CONFIGSP_RETURN_NOT_FOUNDのいずれかの状態です。

StorPortAllocatePool

この規則は、ミニポートが割り当て解除されたバッファーで StorPortFreePool を呼び出そうとしてはならないことを確認します。

StorPortAllocatePool2

この規則は、ミニポートが最初に割り当てを解除せずに、割り当てられたバッファーで StorPortAllocatePool の呼び出しの試行が許可されないことを確認します。

StorPortBuildIo

この規則では、StorPort ミニポートの StorPortBuildIo ルーチンが FALSE を返した場合、問題の SRB が StartIo に渡されないことが検証されます。 (このような場合、ミニポート ドライバーは、StorPortBuildIo または他の場所から RequestComplete という通知の種類で StorPortNotification を呼び出して SRB を完了する必要があります)。

StorPortCompleteRequest

この規則では、ミニポートからの StorPortCompleteRequest の呼び出しがないことが検証されます。 StorPortCompleteRequest の使用は推奨されません。つまり、ミニポートは notificationType = RequestCompleteStorPortNotification を呼び出す必要があります。

StorPortEnablePassive

この規則では、StorPortEnablePassiveInitializationHwInitialize 以外のいずれの StorPort ミニポート ドライバー ルーチンからも呼び出されていないことが検証されます。

StorPortFindAdapter

HwStorFindAdapter ルーチンは、PORT_CONFIGURATION_INFORMATION 構造体の MaximumTransferLength フィールドと NumberOfPhysicalBreaks フィールドを設定する必要があります。 デフォルトでは、これらの両方のフィールドの値は SP_UNINITIALIZED_VALUEです。 FindAdapter の終了時に、これらのフィールドのいずれかが SP_UNINITIALIZED_VALUE に設定されている場合は、ドライバーはこの規則に従いません。

StorPortNotification2

この規則では、StorPortNotification への呼び出しで許可された (文書化済みなど) 通知タイプのみを使用していることが検証されます。

StorPortPassiveFromHwInit

HW 初期化エントリ ポイントを HW アダプター制御エントリ ポイントから直接呼び出す場合は、Storport ドライバーの HW 初期化エントリ ポイント内で StorPortEnablePassiveInitialization を呼び出すことはできません。

StorPortPerfOpts

この規則では、StorPortInitializePerfOpts に渡される PerfConfigData パラメーターが NULL でないことが検証されます。

StorPortStartIo

待機またはデータの割り当ては、ミニポートの StartIo ルーチンで実行することはできません。 StorPortStallExecution または時間のかかる操作を伴う別の関数を呼び出した場合、ドライバーはこの規則に従いません。 StartIo は同期されるため、これらの呼び出しは、主に BuildIoで行う必要があります。

StorPortTimer

StorPortNotification(RequestTimerCall) を呼び出す場合、HW_TIMER ルーチンを定義する必要があります。

SrbProcessing 規則セットを選択するには

  1. Microsoft Visual Studio でドライバー プロジェクト (.vcxProj) を選択します。 [ドライブ] メニューから [スタティック ドライバー ベリファイアを起動] をクリックします。

  2. 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)」をご参照ください。