структура DEVICE_DATA_SET_LB_PROVISIONING_STATE (winioctl.h)

Структура выходных данных для действия DeviceDsmAction_Allocation кода элемента управления IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES .

Синтаксис

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

Если указанный диапазон не выравнивается с optimalUnmapGranularity, возвращенным в DEVICE_LB_PROVISIONING_DESCRIPTOR структуре, то данные, представленные в SlabAllocationBitMap , смещаются из указанного диапазона на эту величину.

SlabAllocationBitMapBitCount

Число соответствующих битов на растровом рисунке.

SlabAllocationBitMapLength

Число DWORDв массиве растровых изображений.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Растровое изображение выделения, содержащее по одному биту для каждой плиты. Если задан бит, выделяется соответствующая плитка. В противном случае, если бит ясно, соответствующая плитка не будет размещена.

Комментарии

Сведения о состоянии подготовки возвращаются, если для элемента Action структуры DEVICE_MANAGE_DATA_SET_ATTRIBUTES задано значение DeviceDsmAction_Allocation. Вызывающий объект должен включать только один диапазон набора данных в системный буфер в DataSetRangesOffset.

При возврате системный буфер содержит структуру DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT , за которой следует структура DEVICE_DATA_SET_LB_PROVISIONING_STATE . Структура DEVICE_DATA_SET_LB_PROVISIONING_STATE начинается со смещения от начала системного буфера, заданного параметром OutputBlockOffset в DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT.

Каждый бит в растровом рисунке выделения представляет собой сопоставление плит в запрашиваемом диапазоне набора данных. Биты напрямую соответствуют слябам в диапазоне набора данных. Это означает, что бит 0 на растровом рисунке помечает первую плиту в диапазоне. Сляба сопоставляется, если битовое значение = 1, и несопоставленная, если битовое значение = 0.

Пространство для SlabAllocationBitMap должно быть выделено в зависимости от количества возможных плит в запрошенном диапазоне набора данных. Возвращаемый растровый рисунок SlabAllocationBitMapLength имеет значение (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0).

Размер slab определяется элементом OptimalUnmapGranularity структуры DEVICE_LB_PROVISIONING_DESCRIPTOR , возвращаемой из кода элемента управления IOCTL_STORAGE_QUERY_PROPERTY . Длина предоставленного диапазона набора данных должна быть кратна значению 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)

См. также раздел

DEVICE_LB_PROVISIONING_DESCRIPTOR

Структуры Управление устройствами

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES