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_PARAMETERS 的 Features0 中的 CHANGER_POSITION_TO_ELEMENT 标志指示更换器是否支持此功能。
更改器类驱动程序在调用 ChangerSetPosition 之前检查 I/O 堆栈位置中的输入缓冲区长度。 Irp-SystemBuffer> 指向CHANGER_SET_POSITION结构作为输入参数,指示传输元素和要设置的目标。
ChangerSetPosition 首先验证传输和目标元素地址是否有效,并将从零开始的元素地址转换为特定于设备的地址。 然后,它使用 CDB 生成 SRB 来定位元素,并将其发送到系统端口驱动程序。
ChangerSetPosition 在返回到变更程序类驱动程序之前,将 I/O 状态块中的 “信息 ”字段设置为 sizeof (CHANGER_SET_POSITION) 。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | mcd.h (包括 Mcd.h、Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |