返回给定 SCSI 主机总线适配器(HBA)上所有设备的 SCSI 查询数据。 如果在用户空间中使用 IOCTL,则程序必须已打开 HBA 的句柄,该句柄可以通过各种方式(如 SetupDixxx 调用)进行枚举。 可以使用 IOCTL_STORAGE_QUERY_PROPERTY 在 HBA 上查找有关特定设备的信息。 若要确定所需的输出缓冲区的大小,调用方应在循环中发送此 IOCTL 请求。 每当存储堆栈拒绝 IOCTL 时,都会显示一条错误消息,指示缓冲区太小,调用方应将缓冲区大小加倍。
主要代码
输入缓冲区
没有。
输入缓冲区长度
没有。
输出缓冲区
Irp->AssociatedIrp.SystemBuffer 的缓冲区包含返回的查询数据。 有关输出缓冲区中查询数据的布局的说明,请参阅 SCSI_ADAPTER_BUS_INFO。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 指示缓冲区的大小(以字节为单位) 必须 >= (sizeof(SCSI_ADAPTER_BUS_INFO) + (NumberOfBuses) * sizeof(SCSI_BUS_DATA)) + (inquiryDataS * ize NumberOfLUs),其中 查询DataSize(sizeof(SCSI_INQUIRY_DATA) - 1 + INQUIRYDATABUFFERSIZE)向上舍入到对齐边界。
状态块
信息 字段包含输出缓冲区中返回的字节数。 状态 字段指示作的结果。
要求
| 要求 | 价值 |
|---|---|
| 标头 | ntddscsi.h (包括 Ntddscsi.h) |