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에는 SenseInfoBuffer의 SCSI 감지 정보가 포함됩니다. 버퍼의 길이는 SenseInfoBufferLength입니다. TAPE_ERROR_ROUTINE 루틴은 SRB의 SrbStatus 및 ScsiStatus와 함께 이 정보를 검사하여 반환된 TAPE_STATUS 변경할지 여부를 결정해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | minitape.h(Minitape.h 포함) |