STORAGE_DEVICE_DESCRIPTOR结构(ntddstor.h)
STORAGE_DEVICE_DESCRIPTOR 结构与 IOCTL_STORAGE_QUERY_PROPERTY 请求结合使用,以检索设备的存储设备描述符数据。
语法
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
ULONG Version;
ULONG Size;
UCHAR DeviceType;
UCHAR DeviceTypeModifier;
BOOLEAN RemovableMedia;
BOOLEAN CommandQueueing;
ULONG VendorIdOffset;
ULONG ProductIdOffset;
ULONG ProductRevisionOffset;
ULONG SerialNumberOffset;
STORAGE_BUS_TYPE BusType;
ULONG RawPropertiesLength;
UCHAR RawDeviceProperties[1];
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
成员
Version
指示 STORAGE_DEVICE_DESCRIPTOR 结构的大小。 当成员添加到结构时,此成员的值将发生更改。
Size
指定描述符的总大小(以字节为单位),包括附加到结构的 ID 字符串。
DeviceType
指定由 Small Computer Systems Interface (SCSI) 规范定义的设备类型。
DeviceTypeModifier
指定 SCSI 规范定义的设备类型修饰符(如果有)。 如果不存在设备类型修饰符,则此成员为零。
RemovableMedia
指示何时 TRUE 设备媒体(如果有)是可移动的。 如果设备没有媒体,则应忽略此成员。 FALSE 设备的媒体不可移动。
CommandQueueing
指示设备何时 TRUE 设备支持多个未完成的命令(SCSI 标记的队列或等效命令)。 FALSE时,设备不支持 SCSI 标记的队列或等效项。 STORPORT 驱动程序负责同步命令。
VendorIdOffset
指定从结构开头到 NULL终止的 ASCII 字符串(包含设备的供应商 ID)的字节偏移量。 如果设备没有供应商 ID,则此成员为零。
ProductIdOffset
指定结构开头到包含设备产品 ID 的 NULL终止的 ASCII 字符串的字节偏移量。 如果设备没有产品 ID,则此成员为零。
ProductRevisionOffset
指定从结构的开头到包含设备产品修订字符串的 NULL终止的 ASCII 字符串的字节偏移量。 如果设备没有产品修订字符串,则此成员为零。
SerialNumberOffset
指定从结构的开头到包含设备的序列号的 NULL终止的 ASCII 字符串的字节偏移量。 如果设备没有序列号,则此成员为零。
BusType
指定类型为 STORAGE_BUS_TYPE 的枚举器值,该值指示设备连接到的总线类型。 这应该用于解释此结构末尾的原始设备属性(如果有)。
RawPropertiesLength
指示已追加到此描述符的特定于总线的数据的字节数。
RawDeviceProperties[1]
包含一个长度数组,该数组用作总线特定属性数据的第一个字节的占位符。
言论
应用程序和存储类驱动程序使用 I/O 控制代码发出设备控制请求,IOCTL_STORAGE_QUERY_PROPERTY 检索此结构,其中包含有关目标设备的信息。 只能从 FDO 检索结构;尝试从适配器检索设备属性会导致错误。
应用程序或驱动程序可以通过将检索的 STORAGE_DEVICE_DESCRIPTOR 结构强制转换为 STORAGE_DESCRIPTOR_HEADER来确定所需的缓冲区大小,该结构 仅包含版本 和 大小。
要求
要求 | 价值 |
---|---|
标头 | ntddstor.h (包括 Ntddstor.h) |