다음을 통해 공유


ChangerSetPosition 함수(mcd.h)

ChangerSetPosition IOCTL 코드 IOCTL_CHANGER_SET_POSITION사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리합니다.

통사론

NTSTATUS ChangerSetPosition(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp
);

매개 변수

[in] DeviceObject

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

[in] Irp

IRP에 대한 포인터입니다.

반환 값

체인저가 전송 요소의 위치 설정을 지원하는 경우 ChangerSetPosition 시스템 포트 드라이버에서 반환된 상태 또는 다음 값 중 하나를 반환합니다.

STATUS_SUCCESS

STATUS_INFO_LENGTH_MISMATCH

STATUS_INVALID_PARAMETER

STATUS_INSUFFICIENT_RESOURCES

체인저가 전송 요소의 위치 설정을 지원하지 않으면 ChangerSetPosition은 STATUS_INVALID_DEVICE_REQUEST 반환합니다.

발언

이 루틴은 필수입니다.

ChangerSetPosition 변경자의 로봇 전송 메커니즘을 지정된 대상으로 설정하며, 일반적으로 전송을 먼저 배치하여 미디어 이동 또는 교환을 최적화합니다.

GET_CHANGER_PARAMETERSFeatures0 CHANGER_POSITION_TO_ELEMENT 플래그는 변경기가 이 기능을 지원하는지 여부를 나타냅니다.

체인저 클래스 드라이버는 ChangerSetPosition호출하기 전에 I/O 스택 위치에서 입력 버퍼 길이를 확인합니다. Irp->SystemBufferCHANGER_SET_POSITION 구조를 설정할 전송 요소와 대상을 나타내는 입력 매개 변수로 가리킵니다.

ChangerSetPosition 먼저 전송 및 대상 요소 주소가 유효한지 확인하고 0부터 시작하는 요소 주소를 디바이스별 주소로 변환합니다. 그런 다음, CDB를 사용하여 SRB를 빌드하여 요소를 배치하고 시스템 포트 드라이버로 보냅니다.

ChangerSetPosition 변경자 클래스 드라이버로 돌아가기 전에 I/O 상태 블록의 정보 필드를 (CHANGER_SET_POSITION)의크기로 설정합니다.

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 mcd.h(Mcd.h, Ntddchgr.h 포함)
IRQL PASSIVE_LEVEL

참고 항목

, IOCTL_CHANGER_SET_POSITION

CHANGER_ELEMENT

CHANGER_SET_POSITION