使用這些規則來確認驅動程式已正確處理 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。 (在這種情況下,迷你埠驅動程式必須透過從 StorPortBuildIo 或其他地方,使用通知類型 RequestComplete,來呼叫 StorPortNotification 以完成 SRB。) |
|
此規則會驗證迷你埠不會呼叫 StorPortCompleteRequest 。 不建議使用 StorPortCompleteRequest;miniports 應該改為使用 notificationType = RequestComplete 呼叫 StorPortNotification。 |
|
此規則會驗證 StorPortEnablePassiveInitialization 僅被 HwInitialize 例程呼叫,而非其他任何 StorPort 小型埠驅動程式例程。 |
|
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 規則集
在 Visual Studio Microsoft中選取您的驅動程式專案 (.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)。