次の方法で共有


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_STATUS・コードが適切であるため、TAPE_ERROR_ROUTINE ルーチンを提供しません。

ただし、一部のデバイスでは、テープ ミニクラス ドライバーは、テープ クラス ドライバーよりも適切なエラー コードを識別できます。 たとえば、テープ クラス ドライバーがTAPE_STATUS_BUS_RESETを返す場合、テープ ミニクラス ドライバーは、一部のデバイスのTAPE_STATUS_NO_MEDIAによって実際の問題がより正確に表されていることを判断できる可能性があります。

テープ ミニクラス ドライバーは、必要に応じて、DriverEntry ルーチンから TapeClassInitialize に渡すTAPE_INIT_DATA_EX構造体内の TAPE_ERROR_ROUTINE ルーチンのエントリ ポイントを指定します。 このようなミニクラス ドライバーの場合、読み取り、書き込み、またはデバイス制御コマンド中にエラーが発生すると、テープ クラス ドライバーは適切なTAPE_STATUS コードを設定し、ミニテープ拡張機能、失敗した SRB、および返されるTAPE_STATUS コードを使用してミニクラス ドライバーの TAPE_ERROR_ROUTINE ルーチンを呼び出します。

TAPE_ERROR_ROUTINE は、入力パラメーターとそのデバイスの知識に基づいて、テープ クラス ドライバーによって提供される状態を変更するかどうかを決定します。 SRB_STATUS_AUTOSENSE_VALID ビットが Srb->SrbStatus 設定されている場合、SRB には SenseInfoBuffer にある SCSI センス情報含まれます。 バッファーの長さは SenseInfoBufferLength です。 TAPE_ERROR_ROUTINE ルーチンは、この情報を SrbStatus と共に調べ、SRB で ScsiStatus して、返されたTAPE_STATUSを変更するかどうかを判断する必要があります。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー minitape.h (Minitape.h を含む)

関連項目

DriverEntry of Tape Miniclass Driver

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize する