DEVICE_DATA_SET_LB_PROVISIONING_STATE 结构 (winioctl.h)
IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES控件代码的DeviceDsmAction_Allocation操作的输出结构。
语法
typedef struct _DEVICE_DATA_SET_LB_PROVISIONING_STATE {
DWORD Size;
DWORD Version;
DWORDLONG SlabSizeInBytes;
DWORD SlabOffsetDeltaInBytes;
DWORD SlabAllocationBitMapBitCount;
DWORD SlabAllocationBitMapLength;
DWORD SlabAllocationBitMap[ANYSIZE_ARRAY];
} DEVICE_DATA_SET_LB_PROVISIONING_STATE, *PDEVICE_DATA_SET_LB_PROVISIONING_STATE, DEVICE_DSM_ALLOCATION_OUTPUT, *PDEVICE_DSM_ALLOCATION_OUTPUT;
成员
Size
此结构的大小,包括位图,以字节为单位。
Version
此结构的版本。
SlabSizeInBytes
板的大小(以字节为单位)。
SlabOffsetDeltaInBytes
如果指定的区域未与DEVICE_LB_PROVISIONING_DESCRIPTOR 结构中返回的 OptimalUnmapGranularity 对齐,则 SlabAllocationBitMap 中表示的数据将从指定范围偏移此量。
SlabAllocationBitMapBitCount
位图中相关位的数目。
SlabAllocationBitMapLength
位图数组中的 DWORD数。
SlabAllocationBitMap[ANYSIZE_ARRAY]
每个板包含一个位的分配位图。 如果设置了位,则分配相应的板。 否则,如果一个位是明确的,则相应的板是未分配的。
注解
当 DEVICE_MANAGE_DATA_SET_ATTRIBUTES 结构的 Action 成员设置为 DeviceDsmAction_Allocation 时,将返回预配状态信息。 调用方应在 DataSetRangesOffset 的系统缓冲区中仅包含一个数据集范围。
返回时,系统缓冲区包含 DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT 结构,后跟 DEVICE_DATA_SET_LB_PROVISIONING_STATE 结构。 DEVICE_DATA_SET_LB_PROVISIONING_STATE结构从 DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT 中 OutputBlockOffset 指定的系统缓冲区开头的偏移量开始。
分配位图中的每个位都表示所请求的数据集范围内的一个板映射。 位直接对应于数据集范围内的板。 这意味着位图中的位 0 标记范围中的第一个板。 如果位值 = 1,则映射板;如果位值 = 0,则取消映射。
应根据请求的数据集范围内可能的板数来分配 SlabAllocationBitMap 的空间。 返回的位图的 SlabAllocationBitMapLength 为 (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0)
。
板大小由从IOCTL_STORAGE_QUERY_PROPERTY控制代码返回的DEVICE_LB_PROVISIONING_DESCRIPTOR结构的 OptimalUnmapGranularity 成员决定。 提供的数据集范围的长度应为 OptimalUnmapGranularity 的倍数。 如果范围长度不是 OptimalUnmapGranularity 的倍数,则将其减小为倍数。
如果数据集范围内的起始偏移量在板边界( OptimalUnmapGranularity 的倍数)上不对齐,则偏移量将调整为下一个边界。 请求的偏移量和调整后的偏移量之间的差值以 SlabOffsetDeltaInBytes 为单位返回。
如果 SlabAllocationBitMapBitCount 中返回的板分配总计由于数据集范围对齐或长度调整而不符合预期,则可能会提交附加请求,其中包含根据 SlabAllocationBitMapBitCount 和 SlabOffsetDeltaInBytes 中的值修改的数据集范围。 新范围将正确选择上一个请求返回的位图中留下的板。
如果请求的板大小太大 (例如,如果它大于 HBA) 的最大传输长度,则 IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 可能会失败并 ERROR_INVALID_PARAMETER。
要求
最低受支持的客户端 | Windows 8 |
最低受支持的服务器 | Windows Server 2012 |
标头 | winioctl.h (包括 Windows.h) |