Storport Miniport 驅動程式中的錯誤處理
每個 Storport 迷你埠驅動程式都必須通知系統埠驅動程式下列類型的 SCSI 錯誤。 這些錯誤應在 SrbStatus 成員中設定,驅動程式完成發生錯誤時所處理的 SRB:
如果 HBA 傳回非特定匯流排錯誤,SRB_STATUS_ERROR ()
SRB_STATUS_PARITY_ERROR
SRB_STATUS_UNEXPECTED_BUS_FREE
SRB_STATUS_SELECTION_TIMEOUT
SRB_STATUS_COMMAND_TIMEOUT
SRB_STATUS_MESSAGE_REJECTED
SRB_STATUS_NO_DEVICE
SRB_STATUS_NO_HBA
SRB_STATUS_DATA_OVERRUN (也會針對下溢) 傳回
SRB_STATUS_PHASE_SEQUENCE_FAILURE
SRB_STATUS_BUSY (TID 忙碌)
對於資料不足,迷你埠驅動程式必須更新 SRB 的 DataTransferLength ,以指出實際傳輸的資料量。
此外,迷你埠驅動程式應該使用下列指導方針,將 SRB 傳遞至 StorPortLogError來記錄上述一些錯誤:
在驅動程式寫入器判斷SRB_STATUS_ERROR時記錄錯誤。
請一律記錄SRB_STATUS_PARITY_ERROR的錯誤。
請一律記錄SRB_STATUS_UNEXPECTED_BUS_FREE的錯誤。
請一律記錄SRB_STATUS_SELECTION_TIMEOUT的錯誤。
請一律記錄SRB_STATUS_COMMAND_TIMEOUT的錯誤。
每當發生溢位時,記錄SRB_STATUS_DATA_OVERRUN的錯誤,但不會在發生下溢時記錄。
請一律記錄SRB_STATUS_PHASE_SEQUENCE_FAILURE的錯誤。
請一律記錄SRB_STATUS_BUSY硬體錯誤的錯誤。
若要記錄錯誤,迷你埠驅動程式會使用下列其中一個系統定義的錯誤或警告碼來呼叫 StorPortLogError :
SP_BUS_PARITY_ERROR對應至SRB_STATUS_PARITY_ERROR
目標邏輯單元SP_UNEXPECTED_DISCONNECT ()
SP_INVALID_RESELECTION對應至SRB_STATUS_PHASE_SEQUENCE_FAILURE或SRB_STATUS_ERROR
SP_BUS_TIME_OUT對應至SRB_STATUS_SELECTION_TIMEOUT
SP_REQUEST_TIMEOUT對應至 SRB_STATUS_COMMAND_TIMEOUT
SP_PROTOCOL_ERROR對應至超溢條件SRB_STATUS_PHASE_SELECTION_FAILURE、SRB_STATUS_UNEXPECTED_BUS_FREE或SRB_STATUS_DATA_OVERRUN
SP_INTERNAL_ADAPTER_ERROR對應至 SRB_STATUS_ERROR
SP_IRQ_NOT_RESPONDING (警告,指出迷你埠驅動程式偵測到 HBA 不再產生中斷要求)
SP_BAD_FW_ERROR FW 是 韌體)
SP_BAD_FW_WARNING
StorPortLogError 會配置錯誤記錄檔封包、加以設定,並代表迷你埠驅動程式在事件記錄檔中記錄 I/O 錯誤。 系統管理員或使用者可以檢查系統事件記錄檔,並視需要重新設定、修復或取代 HBA,以監視 HBA 的條件。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應