TAPE_ERROR_ROUTINE回呼函式 (minitape.h)
TAPE_ERROR_ROUTINE 當 SRB 完成並出現錯誤狀態時,提供裝置特定的錯誤處理。 此例程是選擇性的。
語法
TAPE_ERROR_ROUTINE TapeErrorRoutine;
void TapeErrorRoutine(
[in] PVOID MinitapeExtension,
[in] PSCSI_REQUEST_BLOCK Srb,
[in, out] PTAPE_STATUS TapeStatus
)
{...}
參數
[in] MinitapeExtension
驅動程式專屬迷你工作延伸模組的指標。 如果迷你類別驅動程式在初始化時未要求迷你工作延伸模組,則為 NULL 。
[in] Srb
失敗之作業的 SRB 指標。
[in, out] TapeStatus
磁帶類別驅動程式所設定 TAPE_STATUS 指標。 磁帶迷你類別驅動程式可以變更TAPE_STATUS或保持不變。
傳回值
無
備註
大部分磁帶迷你類別驅動程式不提供 TAPE_ERROR_ROUTINE 例程,因為磁帶類別驅動程式所設定 的TAPE_STATUS 代碼是適當的。
不過,對於某些裝置,磁帶迷你類別驅動程式可以識別比磁帶類別驅動程式更適當的錯誤碼。 例如,如果磁帶類別驅動程式傳回TAPE_STATUS_BUS_RESET,磁帶迷你類別驅動程式可能會判斷某些裝置TAPE_STATUS_NO_MEDIA更精確地表示實際問題。
磁帶迷你類別驅動程式會選擇性地在TAPE_INIT_DATA_EX結構中指定其TAPE_ERROR_ROUTINE例程的進入點,從其 DriverEntry 例程傳遞至 TapeClassInitialize。 針對這類迷你類別驅動程式,當讀取、寫入或裝置控制命令期間發生錯誤時,磁帶類別驅動程式會設定適當的TAPE_STATUS程序代碼,並使用minitape擴充功能、失敗的SRB和傳回的TAPE_STATUS程式代碼呼叫 miniclass 驅動程式的 TAPE_ERROR_ROUTINE例程 。
TAPE_ERROR_ROUTINE 會根據輸入參數及其裝置的知識,判斷是否要改變磁帶類別驅動程式所提供的狀態。 如果在 Srb-SrbStatus> 中設定SRB_STATUS_AUTOSENSE_VALID位,SRB 就會在 SenseInfoBuffer 包含 SCSI 感知資訊。 緩衝區的長度為 SenseInfoBufferLength。 TAPE_ERROR_ROUTINE例程應該檢查這項資訊,以及 SRB 中的 SrbStatus 和 ScsiStatus,以判斷是否要變更傳回的TAPE_STATUS。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | minitape.h (包括 Minitape.h) |