TAPE_ERROR_ROUTINE Rückruffunktion (minitape.h)

TAPE_ERROR_ROUTINE bietet gerätespezifische Fehlerbehandlung, wenn ein SRB mit einem Fehler status abgeschlossen wird. Diese Routine ist optional.

Syntax

TAPE_ERROR_ROUTINE TapeErrorRoutine;

void TapeErrorRoutine(
  [in]      PVOID MinitapeExtension,
  [in]      PSCSI_REQUEST_BLOCK Srb,
  [in, out] PTAPE_STATUS TapeStatus
)
{...}

Parameter

[in] MinitapeExtension

Zeiger auf die treiberspezifische Minibanderweiterung. Dies ist NULL , wenn der Miniklassentreiber bei der Initialisierung keine Minitape-Erweiterung anfordern hat.

[in] Srb

Zeiger auf den SRB für den fehlgeschlagenen Vorgang.

[in, out] TapeStatus

Zeiger auf die vom Bandklassentreiber festgelegte TAPE_STATUS . Der Bandminiklassentreiber kann die TAPE_STATUS ändern oder unverändert lassen.

Rückgabewert

Keine

Bemerkungen

Die meisten Bandminiklassentreiber bieten keine TAPE_ERROR_ROUTINE Routine, da die vom Bandklassentreiber festgelegten TAPE_STATUS Codes geeignet sind.

Für einige Geräte kann ein Bandminiklassentreiber jedoch einen geeigneteren Fehlercode als den Bandklassentreiber identifizieren. Wenn der Bandklassentreiber beispielsweise TAPE_STATUS_BUS_RESET zurückgibt, kann der Bandminiklassentreiber möglicherweise feststellen, dass das tatsächliche Problem durch TAPE_STATUS_NO_MEDIA für einige Geräte genauer dargestellt wird.

Ein Bandminiklassentreiber gibt optional einen Einstiegspunkt für seine TAPE_ERROR_ROUTINE Routine in der TAPE_INIT_DATA_EX Struktur an, die er aus der DriverEntry-Routine an TapeClassInitialize übergibt. Wenn bei einem solchen Miniklassentreiber während eines Lese-, Schreib- oder Gerätesteuerungsbefehls ein Fehler auftritt, legt der Bandklassentreiber einen entsprechenden TAPE_STATUS Code fest und ruft die TAPE_ERROR_ROUTINE Routine des Miniklassentreibers mit der Minibanderweiterung, dem fehlerhaften SRB und dem TAPE_STATUS Code auf, der zurückgegeben werden würde.

TAPE_ERROR_ROUTINE bestimmt, ob die vom Bandklassentreiber bereitgestellten status basierend auf den Eingabeparametern und dessen Kenntnissen über das Gerät geändert werden sollen. Wenn das SRB_STATUS_AUTOSENSE_VALID Bit in Srb-SrbStatus> festgelegt ist, enthält der SRB SCSI-Sinnesinformationen unter SenseInfoBuffer. Die Länge des Puffers ist SenseInfoBufferLength. Die TAPE_ERROR_ROUTINE Routine sollte diese Informationen zusammen mit den SrbStatus und ScsiStatus im SRB untersuchen, um zu ermitteln, ob die zurückgegebene TAPE_STATUS geändert werden soll.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile minitape.h (einschließlich Minitape.h)

Weitere Informationen

DriverEntry of Tape Miniclass Driver

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize