SrbProcessing 規則集(Storport)

使用這些規則來確認驅動程式已正確處理 SRB 要求。

本節中

主題 說明

SpDuplex

此規則會確認此迷你埠處於 全雙工 模式。 根據 StorPort-miniport 模型建置的任何驅動程式都必須處於 全雙工 模式。 只有將現有的 SCSI 驅動程式移植到 StorPort 時,才應該使用半雙工。

SpNoWait

此規則會確認 StartIo 內不會執行等候或數據配置。

SpReturnValue

此規則會驗證驅動程式的 HwStorFindAdapter 和 VirtualHwStorFindAdapter 實作是否傳回有效的狀態。 有效的狀態為下列其中一項: SP_RETURN_FOUND、 SP_RETURN_ERROR、 SP_RETURN_BAD_CONFIG或 SP_RETURN_NOT_FOUND。

StorPortAllocatePool

此規則會驗證迷你埠不得嘗試在已解除分配的緩衝區上呼叫 StorPortFreePool 。

StorPortAllocatePool2

此規則會驗證迷你埠不得嘗試在已配置的緩衝區上呼叫 StorPortAllocatePool ,而不需要先解除分配。

StorPortBuildIo

此規則會驗證如果 StorPort 迷你埠的 StorPortBuildIo 例程傳回 FALSE,則有問題的 SRB 不會傳遞至 StartIo。 (在這種情況下,迷你埠驅動程式必須透過從 StorPortBuildIo 或其他地方,使用通知類型 RequestComplete,來呼叫 StorPortNotification 以完成 SRB。)

StorPortCompleteRequest

此規則會驗證迷你埠不會呼叫 StorPortCompleteRequest 。 不建議使用 StorPortCompleteRequest;miniports 應該改為使用 notificationType = RequestComplete 呼叫 StorPortNotification。

StorPortEnablePassive

此規則會驗證 StorPortEnablePassiveInitialization 僅被 HwInitialize 例程呼叫,而非其他任何 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. 在 Visual Studio Microsoft中選取您的驅動程式專案 (.vcxProj)。 從 驅動程式選單 中,按下 啟動靜態驅動程式驗證。

  2. 按兩下 [ 規則] 索引標籤。在 [規則集] 底下,選取 [SrbProcessing]。

    若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 SrbProcessing.sdv。 例如:

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

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器尋找驅動程式中的缺陷 和 靜態驅動程式驗證器命令(MSBuild)。