共用方式為


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

驅動程式特定迷你任務擴充功能的指標。 如果迷你類別驅動程式在初始化時未要求 minitape 擴充功能,則會 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_ERROR_ROUTINE 例程在TAPE_INIT_DATA_EX結構中傳遞至 TapeClassInitialize 的進入點,DriverEntry 例程。 對於這類迷你類別驅動程式,當讀取、寫入或裝置控制命令期間發生錯誤時,磁帶類別驅動程式會設定適當的TAPE_STATUS程序代碼,並使用minitape擴充功能、失敗的SRB和傳回的TAPE_STATUS程式代碼呼叫迷你類別驅動程式的 TAPE_ERROR_ROUTINE 例程。

TAPE_ERROR_ROUTINE 會根據輸入參數及其對裝置的知識,判斷是否要改變磁帶類別驅動程式所提供的狀態。 如果SRB_STATUS_AUTOSENSE_VALID位是在 Srb->SrbStatus中設定,則 SRB 會在 SenseInfoBuffer包含 SCSI 感知資訊。 緩衝區的長度 SenseInfoBufferLengthTAPE_ERROR_ROUTINE 例程應該檢查此資訊,以及 SRB 中 SrbStatusScsiStatus,以判斷是否要變更傳回TAPE_STATUS。

要求

要求 價值
目標平臺 桌面
標頭 minitape.h (包括 Minitape.h)

另請參閱

磁帶迷你類別驅動程式的 DriverEntry

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize