TAPE_ERROR_ROUTINE Rückruffunktion (minitape.h)
TAPE_ERROR_ROUTINE bietet eine gerätespezifische Fehlerbehandlung, wenn ein SRB mit einem Fehlerstatus abgeschlossen ist. Diese Routine ist optional.
TAPE_ERROR_ROUTINE TapeErrorRoutine;
void TapeErrorRoutine(
[in] PVOID MinitapeExtension,
[in] PSCSI_REQUEST_BLOCK Srb,
[in, out] PTAPE_STATUS TapeStatus
)
{...}
[in] MinitapeExtension
Zeiger auf die treiberspezifische Minitape-Erweiterung. Dies ist NULL-, wenn der Miniklassentreiber beim Initialisieren keine Minitape-Erweiterung angefordert hat.
[in] Srb
Zeiger auf den SRB für den fehlgeschlagenen Vorgang.
[in, out] TapeStatus
Zeigen Sie auf die vom Bandklassentreiber festgelegte TAPE_STATUS. Der Tape Miniclass-Treiber kann die TAPE_STATUS ändern oder unverändert lassen.
Nichts
Die meisten Tape Miniclass-Treiber bieten keine TAPE_ERROR_ROUTINE Routine, da die vom Bandklassentreiber festgelegten TAPE_STATUS Codes geeignet sind.
Bei einigen Geräten kann ein Band-Miniklassentreiber jedoch einen geeigneteren Fehlercode identifizieren als der Bandklassentreiber. Wenn beispielsweise der Bandklassentreiber TAPE_STATUS_BUS_RESET zurückgibt, kann der Band-Miniklassentreiber feststellen, dass das eigentliche Problem bei einigen Geräten genauer durch TAPE_STATUS_NO_MEDIA dargestellt wird.
Ein Tape Miniclass-Treiber gibt optional einen Einstiegspunkt für seine TAPE_ERROR_ROUTINE Routine in der TAPE_INIT_DATA_EX Struktur an, die er an TapeClassInitial ize über seine DriverEntry Routine übergibt. Wenn bei einem solchen Miniklassentreiber während eines Lese-, Schreib- oder Gerätesteuerungsbefehls ein Fehler auftritt, legt der Bandklassentreiber einen geeigneten TAPE_STATUS Code fest und ruft die TAPE_ERROR_ROUTINE Routine des Miniklassentreibers mit der Minitape-Erweiterung, dem fehlgeschlagenen SRB und dem TAPE_STATUS Code auf, der zurückgegeben würde.
TAPE_ERROR_ROUTINE bestimmt, ob der vom Bandklassentreiber bereitgestellte Status basierend auf den Eingabeparametern und seinem Wissen über das Gerät geändert werden soll. 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 bestimmen, ob die zurückgegebenen TAPE_STATUS geändert werden sollen.
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | minitape.h (include Minitape.h) |