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) |