다음을 통해 공유


ChangerError 함수(mcd.h)

ChangerError 는 디바이스별 오류 처리를 수행합니다.

구문

void ChangerError(
  PDEVICE_OBJECT      DeviceObject,
  PSCSI_REQUEST_BLOCK Srb,
  NTSTATUS            *Status,
  BOOLEAN             *Retry
);

매개 변수

DeviceObject

변경자를 나타내는 디바이스 개체에 대한 포인터입니다.

Srb

실패한 작업에 대한 SCSI 요청 블록에 대한 포인터입니다.

Status

시스템에서 설정한 STATUS_XXX 코드의 주소를 지정합니다. 체인저 미니클래스 드라이버는 상태 변경하거나 그대로 둘 수 있습니다.

Retry

요청을 다시 시도할지 여부를 나타내는 플래그에 대한 포인터입니다. 체인저 미니클래스 드라이버는 이 플래그를 설정하거나 그대로 둘 수 있습니다.

반환 값

없음

설명

이 루틴은 필수입니다.

CHECK CONDITION의 SCSI 상태 SRB가 실패하면 SCSI 클래스 드라이버는 체인저 클래스 드라이버의 ChangerClassError 루틴을 호출합니다. ChangerClassError 는 디바이스 독립적 오류 처리를 수행하고 체인저 미니클래스 드라이버의 ChangerError 루틴을 호출합니다.

ChangerError는 먼저 SRB_STATUS_AUTOSENSE_VALID Srb-SrbStatus>를 검사하여 센스 데이터 버퍼가 유효한지 확인합니다. 이 경우 Srb-SenseInfoBuffer>의 센스 데이터를 확인하여 *Status를 보다 정확한 STATUS_XXX 코드로 업데이트할지, 아니면 변경자 클래스 드라이버로 돌아가기 전에 다시 시도 플래그를 설정할지 여부를 결정합니다. 체인저 클래스 드라이버의 재시도 횟수는 SRB가 실제로 다시 시도되는지 여부를 결정합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 mcd.h(Mcd.h, Ntddchgr.h 포함)
IRQL PASSIVE_LEVEL