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 首先验证传输、源和目标元素地址是否有效,然后将从零开始的元素地址转换为特定于设备的元素地址。 然后,它使用 CDB 生成 SRB 以交换媒体并将其发送到系统端口驱动程序。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | mcd.h (包括 Mcd.h、Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |