共用方式為


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。 (在這種情況下,迷你埠驅動程序必須藉由呼叫 來完成SRBStorPortNotification 與來自 StorPortBuildIo 或其他地方的 RequestComplete 通知類型。

StorPortCompleteRequest

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

StorPortEnablePassive

此規則會驗證不是從 HwInitialize 以外的任何 StorPort 迷你埠驅動程式例程呼叫 StorPortEnablePassiveInitialization

StorPortFindAdapter

HwStorFindAdapter 例程必須設定PORT_CONFIGURATION_INFORMATION結構中的 MaximumTransferLengthNumberOfPhysicalBreaks 字段。 根據預設,這兩個字段的值都是 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. 按兩下 [規則] 索引標籤。在 [規則集] 底下,選取 [SrbProcessing]。

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

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

    如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式靜態驅動程式驗證器命令中尋找瑕疵 (MSBuild)