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의 SrbStatusScsiStatus와 함께 이 정보를 검사하여 반환된 TAPE_STATUS 변경할지 여부를 결정해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 minitape.h(Minitape.h 포함)

추가 정보

테이프 미니클래스 드라이버의 DriverEntry

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize