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 |