다음을 통해 공유


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

참고 항목

CHANGER_SET_ACCESS

GET_CHANGER_PARAMETERS

IOCTL_CHANGER_SET_ACCESS