常规存储 I/O 控制代码

不同类型的存储设备通常需要相同的服务。 本部分不重复为每种设备类型提供这些服务的 IOCTL 请求,而是定义一组标准服务以及存储设备经常需要的设备控制代码。 The I/O control codes defined here have the form IOCTL_STORAGE_XXX and they replace the IOCTL_DeviceType_XXX control codes, where DeviceType was DISK, TAPE, or CDROM. For example, IOCTL_STORAGE_RESERVE replaces IOCTL_DISK_RESERVE, IOCTL_TAPE_RESERVE, and IOCTL_CDROM_RESERVE. The IOCTL_STORAGE_XXX control codes have identical values for function code, transfer method, and required access as the previous disk, tape, and CD-ROM codes. 唯一的区别是设备类型。

存储类驱动程序会启动其中一些请求,但通常是一个应用程序。 存储类驱动程序必须处理部分或全部请求,具体取决于存储设备的类型。 如果不存在存储类驱动程序,应用程序可能会直接向端口驱动程序发出请求。

IOCTL Description
IOCTL_STORAGE_BREAK_RESERVATION 中断磁盘预留。
IOCTL_STORAGE_CHECK_VERIFY 确定媒体在调用方打开的可移动媒体设备上是否已更改,以便进行读取或写入访问。
IOCTL_STORAGE_CHECK_VERIFY2 Determines whether the media has changed on a removable-media device - the caller has opened with FILE_READ_ATTRIBUTES.
IOCTL_STORAGE_DEVICE_POWER_CAP 指定存储设备的最大运行能耗级别。
IOCTL_STORAGE_EJECT_MEDIA 如果设备支持弹出功能,则会导致设备弹出媒体。
IOCTL_STORAGE_EJECTION_CONTROL 锁定设备以防止删除媒体。
IOCTL_STORAGE_FIND_NEW_DEVICES 确定驱动程序支持的另一台设备是自系统启动后还是自驱动程序上次处理此请求以来连接到 I/O 总线。
IOCTL_STORAGE_FIRMWARE_ACTIVATE 在存储设备上激活固件映像。
IOCTL_STORAGE_FIRMWARE_DOWNLOAD 将固件映像下载到存储设备,但不激活它。
IOCTL_STORAGE_FIRMWARE_GET_INFO 查询存储设备以获取详细的固件信息。
IOCTL_STORAGE_GET_DEVICE_NUMBER Returns a STORAGE_DEVICE_NUMBER structure that contains the FILE_DEVICE_XXX type, device number, and, for a partitionable device, the partition number assigned to a device by the driver when the device is started.
IOCTL_STORAGE_GET_HOTPLUG_INFO 检索指定设备的热插拔配置。
IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES The IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES request is sent to the storage class driver to determine available and used mapping resources on a storage device.
IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER 查询 USB 通用父驱动程序以获取 USB 设备的序列号。
IOCTL_STORAGE_GET_MEDIA_TYPES 返回有关软盘驱动器几何图形的信息。
IOCTL_STORAGE_GET_MEDIA_TYPES_EX 返回有关设备支持的媒体类型的信息。
IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS The IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS control code queries for and returns the physical element status from a device.
IOCTL_STORAGE_LOAD_MEDIA 导致媒体加载到调用方已打开进行读取或写入访问的设备中。
IOCTL_STORAGE_LOAD_MEDIA2 Causes media to be loaded in a device that the caller has opened with FILE_READ_ATTRIBUTES.
IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES This IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES request is used to send a manage data set attributes request to a storage device.
IOCTL_STORAGE_MCN_CONTROL Temporarily enables or disables delivery of the custom PnP events GUID_IO_MEDIA_ARRIVAL and GUID_IO_MEDIA_REMOVAL on a removable-media device.
IOCTL_STORAGE_MEDIA_REMOVAL 锁定设备以防止删除媒体。
IOCTL_STORAGE_PERSISTENT_RESERVE_IN 泛型存储类驱动程序(classpnp.sys)公开 I/O 控件(IOCTL)接口,用于发出持久保留 In 命令。
IOCTL_STORAGE_PERSISTENT_RESERVE_OUT 泛型存储类驱动程序(classpnp.sys)公开 I/O 控件(IOCTL)接口,用于发出持久保留 Out 命令。
IOCTL_STORAGE_PREDICT_FAILURE 轮询设备故障的预测。
IOCTL_STORAGE_PROTOCOL_COMMAND A driver can use IOCTL_STORAGE_PROTOCOL_COMMAND to pass vendor-specific commands to a storage device
IOCTL_STORAGE_QUERY_PROPERTY A driver can use IOCTL_STORAGE_QUERY_PROPERTY to return properties of a storage device or adapter.
IOCTL_STORAGE_READ_CAPACITY The IOCTL_STORAGE_READ_CAPACITY request returns the read capacity information for the target storage device.
IOCTL_STORAGE_REINITIALIZE_MEDIA A driver can use the IOCTL_STORAGE_REINITIALIZE_MEDIA control code to reinitialize/erase a device.
IOCTL_STORAGE_RELEASE 释放以前保留的设备,以便在支持多个发起方和保留设备的概念(如 SCSI 总线)上的调用方独占使用。
IOCTL_STORAGE_RESERVE 在支持多个发起方和保留设备(如 SCSI 总线)的概念的总线上声明调用方独占使用的设备。
IOCTL_STORAGE_RESET_BUS 重置 I/O 总线,并间接重置总线上的每个设备。
IOCTL_STORAGE_RESET_DEVICE 如果可能,请重置非 SCSI 存储设备,而不会影响总线上的其他设备。
IOCTL_STORAGE_SET_HOTPLUG_INFO 设置指定设备的热插拔配置。
IOCTL_STORAGE_SET_PROPERTY 指示更改属性的请求是成功还是导致错误。
IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD A driver can use IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD to set the temperature threshold of a storage device (when supported by the hardware).