Поделиться через


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

Структура DEVICE_DATA_SET_LB_PROVISIONING_STATE возвращается запросом IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES при запросе сведений о подготовке логических блоков для диапазона набора данных.

Синтаксис

typedef struct _DEVICE_DATA_SET_LB_PROVISIONING_STATE {
  ULONG     Size;
  ULONG     Version;
  ULONGLONG SlabSizeInBytes;
  ULONG     SlabOffsetDeltaInBytes;
  ULONG     SlabAllocationBitMapBitCount;
  ULONG     SlabAllocationBitMapLength;
  ULONG     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

Разница (в байтах) от смещения, указанного в диапазоне набора данных, до начальной позиции плиты.

SlabAllocationBitMapBitCount

Число битов в слэбах сопоставления точечного рисунка выделения для диапазона набора данных.

SlabAllocationBitMapLength

Количество значений массива ULONG , содержащих растровое изображение выделения плиты.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Растровое изображение выделения плит.

Комментарии

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

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

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

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

Размер Slab определяется элементом OptimalUnmapGranularityDEVICE_LB_PROVISIONING_DESCRIPTOR , возвращенным из запроса IOCTL_STORAGE_QUERY_PROPERTY . Длина предоставленного диапазона набора данных должна быть кратна значению OptimalUnmapGranularity. Если длина диапазона не кратна OptimalUnmapGranularity, она уменьшается до кратности.

Если начальное смещение в диапазоне набора данных не выравнивается на границе плиты, кратной OptimalUnmapGranularity, смещение будет скорректировано до следующей границы. Разница между запрошенным и скорректированным смещением возвращается в SlabOffsetDeltaInBytes.

Если общий объем выделения плиток, возвращенный в SlabAllocationBitMapBitCount , не соответствует ожиданиям из-за выравнивания диапазона набора данных или корректировки длины, может быть отправлен дополнительный запрос с диапазоном набора данных, измененным в соответствии со значениями SlabAllocationBitMapBitCount и SlabOffsetDeltaInBytes. Новый диапазон правильно выберет плиты, оставшиеся вне растрового изображения, возвращенного предыдущим запросом.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 8.
Верхняя часть ntddstor.h (включая Ntddstor.h)

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

Описания DEVICE_DSM_ACTION

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY