Freigeben über


ChangerError-Funktion (mcd.h)

ChangerError führt gerätespezifische Fehlerbehandlung durch.

Syntax

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

Parameter

DeviceObject

Zeiger auf das Geräteobjekt, das den Changer darstellt.

Srb

Zeiger auf den SCSI-Anforderungsblock für den fehlgeschlagenen Vorgang.

Status

Gibt die Adresse des vom System festgelegten STATUS_XXX-Code an. Der Changer-Miniklassentreiber kann den status ändern oder unverändert lassen.

Retry

Zeiger auf ein Flag, das angibt, ob die Anforderung wiederholt werden soll. Der Changer-Miniklassentreiber kann dieses Flag festlegen oder unverändert lassen.

Rückgabewert

Keine

Bemerkungen

Diese Routine ist erforderlich.

Wenn ein SRB mit einem SCSI-status von CHECK CONDITION fehlschlägt, ruft der SCSI-Klassentreiber die ChangerClassError-Routine des Changer-Klassentreibers auf. ChangerClassError führt geräteunabhängige Fehlerbehandlung durch und ruft die ChangerError-Routine des Changer-Miniklassentreibers auf.

ChangerError überprüft zuerst Srb-SrbStatus> mit SRB_STATUS_AUTOSENSE_VALID, um sicherzustellen, dass der sinnvolle Datenpuffer gültig ist. Wenn ja, wird die Sense-Daten in Srb-SenseInfoBuffer> überprüft, um zu ermitteln, ob *Status mit einem genaueren STATUS_XXX-Code aktualisiert werden soll, und/oder das Wiederholungsflag festlegen, bevor sie zum Changerklassentreiber zurückkehren. Die Wiederholungsanzahl des Changerklassentreibers bestimmt, ob der SRB tatsächlich wiederholt wird.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile mcd.h (include Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL