структура 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