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。 (在這種情況下,迷你埠驅動程序必須藉由呼叫 來完成SRBStorPortNotification 與來自 StorPortBuildIo 或其他地方的 RequestComplete 通知類型。 |
|
此規則會驗證迷你埠不會呼叫 StorPortCompleteRequest 。 不建議使用 StorPortCompleteRequest;迷你埠應該改為使用 notificationType = RequestComplete 呼叫 StorPortNotification。 |
|
此規則會驗證不是從 HwInitialize 以外的任何 StorPort 迷你埠驅動程式例程呼叫 StorPortEnablePassiveInitialization。 |
|
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)。 從 [驅動程式] 功能表中,按兩下 [啟動靜態驅動程序驗證程式...]。
按兩下 [規則] 索引標籤。在 [規則集] 底下,選取 [SrbProcessing]。
若要從 Visual Studio 開發人員命令提示字元視窗中選取預設規則集,請使用 /check 選項指定 SrbProcessing.sdv。 例如:
msbuild /t:sdv /p:Inputs="/check:SrbProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式 和 靜態驅動程式驗證器命令中尋找瑕疵 (MSBuild) 。