常规存储 I/O 控制代码
不同类型的存储设备通常需要相同的服务。 本部分定义了存储设备经常需要的一组标准服务和随附的设备控制代码,而不是复制为每个设备类型提供这些服务的 IOCTL 请求。 此处定义的 I/O 控制代码的格式为 IOCTL_STORAGE_XXX ,它们替换IOCTL_DeviceType_XXX 控制代码,其中 DeviceType 为 DISK、TAPE 或 CDROM。 例如, IOCTL_STORAGE_RESERVE 替换 IOCTL_DISK_RESERVE、 IOCTL_TAPE_RESERVE和 IOCTL_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_ARRIVAL 和 GUID_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 设置存储设备 (的温度阈值。 |