TAPE_ERROR_ROUTINE 콜백 함수(minitape.h)
TAPE_ERROR_ROUTINE SRB가 오류 상태로 완료될 때 디바이스별 오류 처리를 제공합니다. 이 루틴은 선택 사항입니다.
통사론
TAPE_ERROR_ROUTINE TapeErrorRoutine;
void TapeErrorRoutine(
[in] PVOID MinitapeExtension,
[in] PSCSI_REQUEST_BLOCK Srb,
[in, out] PTAPE_STATUS TapeStatus
)
{...}
매개 변수
[in] MinitapeExtension
드라이버별 미니 테이프 확장에 대한 포인터입니다. 미니 클래스 드라이버가 초기화할 때 미니 테이프 확장을 요청하지 않은 경우 NULL .
[in] Srb
실패한 작업에 대한 SRB에 대한 포인터입니다.
[in, out] TapeStatus
테이프 클래스 드라이버에서 설정한 TAPE_STATUS 대한 포인터입니다. 테이프 미니 클래스 드라이버는 TAPE_STATUS 변경하거나 변경되지 않은 상태로 둘 수 있습니다.
반환 값
없음
발언
테이프 클래스 드라이버에서 설정한 TAPE_STATUS 코드가 적절하기 때문에 대부분의 테이프 미니 클래스 드라이버는 TAPE_ERROR_ROUTINE 루틴을 제공하지 않습니다.
그러나 일부 디바이스의 경우 테이프 미니 클래스 드라이버는 테이프 클래스 드라이버보다 더 적절한 오류 코드를 식별할 수 있습니다. 예를 들어 테이프 클래스 드라이버가 TAPE_STATUS_BUS_RESET 반환하는 경우 테이프 미니 클래스 드라이버는 실제 문제가 일부 디바이스의 TAPE_STATUS_NO_MEDIA 더 정확하게 표현되는지 확인할 수 있습니다.
테이프 미니 클래스 드라이버는 선택적으로 DriverEntry 루틴에서 TapeClassInitialize에 전달하는 TAPE_INIT_DATA_EX 구조에서 TAPE_ERROR_ROUTINE 루틴의 진입점을 지정합니다. 이러한 미니 클래스 드라이버의 경우 읽기, 쓰기 또는 디바이스 제어 명령 중에 오류가 발생하면 테이프 클래스 드라이버는 적절한 TAPE_STATUS 코드를 설정하고 미니 테이프 확장, 실패한 SRB 및 반환될 TAPE_STATUS 코드를 사용하여 미니클래스 드라이버의 TAPE_ERROR_ROUTINE 루틴을 호출합니다.
TAPE_ERROR_ROUTINE 입력 매개 변수 및 디바이스에 대한 지식을 기반으로 테이프 클래스 드라이버에서 제공하는 상태를 변경할지 여부를 결정합니다. SRB_STATUS_AUTOSENSE_VALID 비트가 Srb->SrbStatus설정된 경우 SRB에는 SenseInfoBufferSCSI 감지 정보가 포함됩니다. 버퍼의 길이는 SenseInfoBufferLength . TAPE_ERROR_ROUTINE 루틴은 SRB에서 SrbStatus 및 ScsiStatus 함께 이 정보를 검사하여 반환된 TAPE_STATUS 변경할지 여부를 결정해야 합니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | minitape.h(Minitape.h 포함) |