다음을 통해 공유


ChangerExchangeMedium 함수(mcd.h)

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

구문

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

매개 변수

[in] DeviceObject

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

[in] Irp

IRP에 대한 포인터입니다.

반환 값

변경기가 미디어 교환을 지원하는 경우 ChangerExchangeMedium은 시스템 포트 드라이버에서 반환된 상태 반환하거나 다음 값 중 하나를 반환합니다.

STATUS_SUCCESS

STATUS_DESTINATION_ELEMENT_FULL

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_SOURCE_ELEMENT_EMPTY

변경기가 미디어 교환을 지원하지 않는 경우 ChangerExchangeMedium은 STATUS_INVALID_DEVICE_REQUEST 반환합니다.

설명

이 루틴은 필수입니다.

ChangerExchangeMedium은 원본 요소에서 하나의 대상으로, 그리고 해당 대상에서 다른 대상으로 미디어 조각을 이동합니다. 원본 및 두 번째 대상은 종종 동일하므로 미디어 교환이 간단합니다.

GET_CHANGER_PARAMETERS 구조체의 Features0있는 CHANGER_EXCHANGE_MEDIA 플래그는 변경기가 이 기능을 지원하는지 여부를 나타냅니다. 미디어 교환을 지원하는 체인저에는 일반적으로 단일 전송 요소 또는 두 개 이상의 전송 요소에 대한 두 개의 선택기 메커니즘이 있습니다. 단일 선택기 메커니즘이 있는 체인저는 명령의 에뮬레이션을 통해 매체 교환을 지원할 수 있습니다.

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

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

요구 사항

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

추가 정보

CHANGER_ELEMENT

CHANGER_EXCHANGE_MEDIUM

ChangerMoveMedium

GET_CHANGER_PARAMETERS