IOCTL_STORAGE_QUERY_PROPERTY IOCTL (ntddstor.h)
驱动程序可以使用 IOCTL_STORAGE_QUERY_PROPERTY 返回存储设备或适配器的属性。 请求指示要检索的信息类型,例如设备的查询数据或适配器的功能和限制。 IOCTL_STORAGE_QUERY_PROPERTY 还可用于确定端口驱动程序是否支持特定的属性,或者可以使用后续更改属性请求修改属性描述符中的哪些字段。
主要代码
输入缓冲区
Parameters.DeviceIoControl.InputBufferLength 指示 Irp-AssociatedIrp.SystemBuffer> 的参数缓冲区的大小(以字节为单位),该大小必须为 >= sizeof (STORAGE_PROPERTY_QUERY) 。
Irp->AssociatedIrp.SystemBuffer 包含 STORAGE_PROPERTY_QUERY 数据,用于指定是查询设备还是适配器、要执行的查询类型以及查询所需的任何其他参数,例如特定 SCSI 模式感知页的页面代码。 只能从设备检索设备属性;尝试从适配器检索设备属性将导致错误。
Parameters.DeviceIoControl.OutputBufferLength 指示可写入 Irp-AssociatedIrp.SystemBuffer> 的字节数。 OutputBufferLength 可以为零,以确定属性是否存在而不检索其数据。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 指示 Irp-AssociatedIrp.SystemBuffer> 的参数缓冲区的大小(以字节为单位),该大小必须为 >= sizeof (STORAGE_PROPERTY_QUERY) 。
输出缓冲区
驱动程序将查询数据返回到 Irp-AssociatedIrp.SystemBuffer> 处的缓冲区。 可以将不同数量的特定于总线的数据追加到 结构中。
输出缓冲区长度
将返回的结构强制转换为STORAGE_DESCRIPTOR_HEADER,并检查其 Size 成员来确定结构实际需要的字节数。
状态块
“ 信息” 字段设置为返回的字节数。 “ 状态” 字段设置为STATUS_SUCCESS,或者可能设置为STATUS_INVALID_DEVICE_REQUEST、STATUS_INVALID_PARAMETER或STATUS_NOT_SUPPORTED。
要求
要求 | 值 |
---|---|
Header | ntddstor.h (包括 Ntddstor.h) |