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 |
참조
피드백
다음에 대한 사용자 의견 제출 및 보기