次の方法で共有


ChangerError 関数 (mcd.h)

ChangerError は 、デバイス固有のエラー処理を実行します。

構文

void ChangerError(
  PDEVICE_OBJECT      DeviceObject,
  PSCSI_REQUEST_BLOCK Srb,
  NTSTATUS            *Status,
  BOOLEAN             *Retry
);

パラメーター

DeviceObject

変更子を表すデバイス オブジェクトへのポインター。

Srb

失敗した操作の SCSI 要求ブロックへのポインター。

Status

システムによって設定されたSTATUS_XXX コードのアドレスを指定します。 変更子ミニクラス ドライバーは、状態を変更するか、そのままにすることができます。

Retry

要求を再試行するかどうかを示すフラグへのポインター。 changer ミニクラス ドライバーは、このフラグを設定することも、そのままにすることもできます。

戻り値

なし

解説

このルーチンは必須です。

SRB が SCSI 状態の CHECK CONDITION で失敗した場合、SCSI クラス ドライバーは、changer クラス ドライバーの ChangerClassError ルーチンを 呼び出します。 ChangerClassError は 、デバイスに依存しないエラー処理を実行し、changer ミニクラス ドライバーの ChangerError ルーチンを 呼び出します。

ChangerError は、まず Srb-SrbStatus> をSRB_STATUS_AUTOSENSE_VALIDでチェックして、センス データ バッファーが有効であることを確認します。 その場合は、Srb-SenseInfoBuffer> のセンス データをチェックして、より正確なSTATUS_XXX コードで *Status を更新するか、または changer クラス ドライバーに戻る前に Retry フラグを設定するかを判断します。 changer クラス ドライバーの再試行回数によって、SRB が実際に再試行されるかどうかが決まります。

要件

要件
対象プラットフォーム デスクトップ
Header mcd.h (Mcd.h、Ntddchgr.h を含む)
IRQL PASSIVE_LEVEL