changerSetAccess 函数 (mcd.h)
ChangerSetAccess 使用 IOCTL 代码 IOCTL_CHANGER_SET_ACCESS处理设备控制 IRP 的设备特定方面。
语法
NTSTATUS ChangerSetAccess(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
参数
[in] DeviceObject
指向表示更换器的设备对象的指针。
[in] Irp
指向 IRP 的指针。
返回值
如果变更程序支持设置访问权限, 则 ChangerSetAccess 将返回系统端口驱动程序返回的 STATUS_XXX 值或以下值之一:
STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER
如果变更程序不支持设置访问权限,ChangerSetAccess 将返回STATUS_INVALID_DEVICE_REQUEST。
注解
此例程是必需的。
ChangerSetAccess 可锁定或解锁更换器的 IEport、门或键盘,并扩展或收回 IEport。
在调用 ChangerSetAccess 之前,变更程序类驱动程序会检查 I/O 堆栈位置中的输入缓冲区长度。 Irp-SystemBuffer> 指向CHANGER_SET_ACCESS结构作为输入参数,指示要设置的元素和要执行的操作。
ChangerSetAccess 首先检查不支持的元素和操作,并为不支持的元素和操作返回相应的状态代码。
接下来, ChangerSetAccess 将系统传递的从零开始的元素地址转换为变更程序所需的特定于设备的元素地址。
最后, ChangerSetAccess 使用 CDB 为给定元素上的给定操作生成 SRB,并将其发送到系统端口驱动程序。 要使用的命令取决于更换器。 例如,Exabyte 微型类驱动程序使用 SCSI 命令 PREVENT ALLOW MEDIUM DELETE 锁定或解锁更换器门,并使用 MOVE MEDIUM 命令扩展或收回 IEport。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | mcd.h (包括 Mcd.h、Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |