IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)
锁定设备以防止移除介质。 如果驱动程序可以在使用驱动器时阻止移除介质,则驱动程序将禁用或启用弹出介质的机制,从而锁定驱动器。 调用方必须使用FILE_READ_ATTRIBUTES打开设备才能发送此请求。
与 IOCTL_STORAGE_MEDIA_REMOVAL不同,驱动程序跟踪调用方 IOCTL_STORAGE_EJECTION_CONTROL 请求,并忽略未收到来自同一调用方锁定请求的解锁请求,从而阻止其他调用方解锁驱动器。
可移动媒体设备的驱动程序 - 可支持此 IOCTL 必须执行以下操作:
- 在设备对象扩展中保留由调用方标记的锁计数。
- 保留每个物理设备的锁计数。
- 使用此 IOCTL 调用时,如果设置了阻止删除介质的标志,则递增计数;如果标志是清除的,并且驱动程序以前收到了来自同一调用方的锁定请求,则递减计数。
- 除非所有锁计数均为零,否则阻止移除介质。
为了确保正确释放媒体删除锁,类驱动程序会跟踪使用IOCTL_STORAGE_EJECTION_CONTROL锁定媒体的调用方。 如果调用方在未解锁设备的情况下终止,则类驱动程序将解锁设备。
主要代码
输入缓冲区
Irp-AssociatedIrp.SystemBuffer> 处的缓冲区包含一个布尔值,其值为 TRUE,指示驱动程序应锁定驱动器中的媒体。
输入缓冲区长度
布尔值的长度。
输出缓冲区
无。
输出缓冲区长度
无。
状态块
“ 信息” 字段设置为零。 “ 状态” 字段设置为STATUS_SUCCESS,或者可能设置为STATUS_INVALID_DEVICE_REQUEST、STATUS_NO_MEDIA_IN_DEVICE或STATUS_DEVICE_NOT_CONNECTED。
要求
要求 | 值 |
---|---|
Header | ntddstor.h (包括 Ntddstor.h) |