IOCTL_STORAGE_MEDIA_REMOVAL IOCTL (ntddstor.h)

锁定设备以防止删除媒体。 如果驱动程序可以阻止在驱动器使用时删除媒体,它将禁用或启用在设备上弹出媒体的机制 - 调用方已打开进行读取或写入访问。

与驱动程序按调用方跟踪请求 的IOCTL_STORAGE_EJECTION_CONTROL不同,驱动程序仅当其锁定计数已为零时才忽略IOCTL_STORAGE_MEDIA_REMOVAL解锁请求,从而允许任何调用方解锁驱动器。

支持此 IOCTL 的此类可移动媒体设备的驱动程序必须执行以下操作:

  1. 在设备对象扩展中保留锁计数。
  2. 保留每个物理设备的锁计数。
  3. 使用此 IOCTL 调用时,如果设置了阻止删除介质的标志,则递增计数;如果标志是明确的,则递减计数。
  4. 除非所有锁计数均为零,否则阻止删除媒体。

主要代码

IRP_MJ_DEVICE_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)

另请参阅

IOCTL_STORAGE_EJECTION_CONTROL