常规存储 I/O 控制代码

不同类型的存储设备通常需要相同的服务。 本部分定义了存储设备经常需要的一组标准服务和随附的设备控制代码,而不是复制为每个设备类型提供这些服务的 IOCTL 请求。 此处定义的 I/O 控制代码的格式为 IOCTL_STORAGE_XXX ,它们替换IOCTL_DeviceType_XXX 控制代码,其中 DeviceType 为 DISK、TAPE 或 CDROM。 例如, IOCTL_STORAGE_RESERVE 替换 IOCTL_DISK_RESERVEIOCTL_TAPE_RESERVEIOCTL_CDROM_RESERVE。 IOCTL_STORAGE_XXX 控制代码与以前的磁盘、磁带和 CD-ROM 代码具有相同的函数代码、传输方法和所需访问权限的值。 唯一的区别是设备类型。

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

IOCTL 说明
IOCTL_STORAGE_BREAK_RESERVATION 中断磁盘预留。
IOCTL_STORAGE_CHECK_VERIFY 确定媒体是否已在调用方打开的可移动媒体设备上发生更改,以便进行读取或写入访问。
IOCTL_STORAGE_CHECK_VERIFY2 确定可移动媒体设备上的媒体是否已更改 - 调用方已使用 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 返回一个 STORAGE_DEVICE_NUMBER 结构,该结构包含FILE_DEVICE_XXX类型、设备编号,以及驱动程序在启动设备时由驱动程序分配给设备的分区号。
IOCTL_STORAGE_GET_HOTPLUG_INFO 检索指定设备的热插头配置。
IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES请求将发送到存储类驱动程序,以确定存储设备上的可用和已用映射资源。
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 IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS控制代码查询并从设备返回物理元素状态。
IOCTL_STORAGE_LOAD_MEDIA 导致媒体加载到调用方已打开进行读取或写入访问的设备中。
IOCTL_STORAGE_LOAD_MEDIA2 导致媒体加载到调用方使用 FILE_READ_ATTRIBUTES打开的设备中。
IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 请求用于将管理数据集属性请求发送到存储设备。
IOCTL_STORAGE_MCN_CONTROL 暂时启用或禁用在可移动媒体设备上 GUID_IO_MEDIA_ARRIVALGUID_IO_MEDIA_REMOVAL 自定义 PnP 事件的传递。
IOCTL_STORAGE_MEDIA_REMOVAL 锁定设备以防止移除介质。
IOCTL_STORAGE_PERSISTENT_RESERVE_IN 泛型存储类驱动程序 (classpnp.sys) (IOCTL) 接口公开 I/O 控件,用于发出持久保留 In 命令。
IOCTL_STORAGE_PERSISTENT_RESERVE_OUT 泛型存储类驱动程序 (classpnp.sys) (IOCTL) 接口公开 I/O 控件,用于发出持久保留输出命令。
IOCTL_STORAGE_PREDICT_FAILURE 轮询设备故障预测。
IOCTL_STORAGE_PROTOCOL_COMMAND 驱动程序可以使用 IOCTL_STORAGE_PROTOCOL_COMMAND 将特定于供应商的命令传递到存储设备
IOCTL_STORAGE_QUERY_PROPERTY 驱动程序可以使用 IOCTL_STORAGE_QUERY_PROPERTY 返回存储设备或适配器的属性。
IOCTL_STORAGE_READ_CAPACITY IOCTL_STORAGE_READ_CAPACITY请求返回目标存储设备的读取容量信息。
IOCTL_STORAGE_REINITIALIZE_MEDIA 驱动程序可以使用 IOCTL_STORAGE_REINITIALIZE_MEDIA 控制代码重新初始化/擦除设备。
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 当硬件) 支持时,驱动程序可以使用 IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD 设置存储设备 (的温度阈值。