ChangerSetAccess 함수(mcd.h)
ChangerSetAccess 는 IOCTL 코드 IOCTL_CHANGER_SET_ACCESS 사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리합니다.
구문
NTSTATUS ChangerSetAccess(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
매개 변수
[in] DeviceObject
변경자를 나타내는 디바이스 개체에 대한 포인터입니다.
[in] Irp
IRP에 대한 포인터입니다.
반환 값
변경기가 액세스 설정을 지원하는 경우 ChangerSetAccess 는 시스템 포트 드라이버 또는 다음 값 중 하나에서 반환된 STATUS_XXX 값을 반환합니다.
STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER
변경자에서 액세스 설정을 지원하지 않는 경우 ChangerSetAccess는 STATUS_INVALID_DEVICE_REQUEST 반환합니다.
설명
이 루틴은 필수입니다.
ChangerSetAccess 는 변경자의 IEport, 도어 또는 키패드를 잠그거나 잠금을 해제하고 IEport를 확장하거나 철회합니다.
ChangerSetAccess를 호출하기 전에 변경자 클래스 드라이버는 I/O 스택 위치에서 입력 버퍼 길이를 확인합니다. Irp-SystemBuffer>는 설정할 요소와 수행할 작업을 나타내는 입력 매개 변수로 CHANGER_SET_ACCESS 구조를 가리킵니다.
ChangerSetAccess는 먼저 지원되지 않는 요소 및 작업을 확인하고 지원하지 않는 요소에 대한 적절한 상태 코드를 반환합니다.
다음으로 ChangerSetAccess 는 시스템에서 전달한 0부터 시작하는 요소 주소를 변경자에서 요구하는 디바이스별 요소 주소로 변환합니다.
마지막으로 ChangerSetAccess 는 지정된 요소에 대해 지정된 작업에 대한 CDB를 사용하여 SRB를 빌드하고 시스템 포트 드라이버로 보냅니다. 사용할 명령은 체인저에 따라 달라집니다. 예를 들어 Exabyte 미니클래스 드라이버는 SCSI 명령 PREVENT ALLOW MEDIUM REMOVE를 사용하여 변경자 도어를 잠그거나 잠금 해제하고 MOVE MEDIUM을 사용하여 IEport를 확장하거나 철회합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | mcd.h(Mcd.h, Ntddchgr.h 포함) |
IRQL | PASSIVE_LEVEL |