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_OUTPUTOutputBlockOffset 指定的系统缓冲区开头的偏移量开始。

分配位图中的每个位都表示所请求的数据集范围内的一个板映射。 位直接对应于数据集范围内的板。 这意味着位图中的位 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 中返回的板分配总计由于数据集范围对齐或长度调整而不符合预期,则可能会提交附加请求,其中包含根据 SlabAllocationBitMapBitCountSlabOffsetDeltaInBytes 中的值修改的数据集范围。 新范围将正确选择上一个请求返回的位图中留下的板。

如果请求的板大小太大 (例如,如果它大于 HBA) 的最大传输长度,则 IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 可能会失败并 ERROR_INVALID_PARAMETER

要求

   
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
标头 winioctl.h (包括 Windows.h)

另请参阅

DEVICE_LB_PROVISIONING_DESCRIPTOR

设备管理 结构

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES