共用方式為


SrbProcessing 規則集(Storport)

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

本節中

主題 說明

SpDuplex

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

SpNoWait

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

SpReturnValue

此規則會驗證驅動程式的 HwStorFindAdapterVirtualHwStorFindAdapter 實作是否傳回有效的狀態。 有效的狀態為下列其中一項: 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;miniports 應該改為使用 notificationType = RequestComplete 呼叫 StorPortNotification

StorPortEnablePassive

此規則會驗證 StorPortEnablePassiveInitialization 僅被 HwInitialize 例程呼叫,而非其他任何 StorPort 小型埠驅動程式例程。

StorPortFindAdapter

HwStorFindAdapter 例程必須設定PORT_CONFIGURATION_INFORMATION結構中的 MaximumTransferLengthNumberOfPhysicalBreaks 字段。 根據預設,這兩個字段的值 都是SP_UNINITIALIZED_VALUE。 如果這兩個欄位中的任何一個在 FindAdapter 結束時仍被設定為 SP_UNINITIALIZED_VALUE,驅動程式將違反規則。

StorPortNotification2

此規則會驗證對 StorPortNotification 的呼叫僅使用允許的通知類型(亦即記載的)。

StorPortPassiveFromHwInit

如果 HW 初始化進入點可以直接從 HW 配接器控制進入點呼叫,則不應該在 Storport 驅動程式的 HW 初始化進入點內呼叫 StorPortEnablePassiveInitialization

StorPortPerfOpts

此規則會驗證傳遞至 StorPortInitializePerfOptsPerfConfigData 參數不是 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)