estructura DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor.h)
La estructura DEVICE_DATA_SET_LB_PROVISIONING_STATE la devuelve una solicitud de IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES al solicitar información de aprovisionamiento de bloques lógicos para un intervalo de conjuntos de datos.
Sintaxis
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;
Miembros
Size
Tamaño de esta estructura, incluido el mapa de bits de asignación de lalabas, en bytes.
Version
Versión de esta estructura.
SlabSizeInBytes
Tamaño, en bytes, de una lalaba.
SlabOffsetDeltaInBytes
La diferencia, en bytes, del desplazamiento especificado en el intervalo del conjunto de datos a la posición de la lalaba inicial.
SlabAllocationBitMapBitCount
El número de bits de la asignación de mapas de bits de asignación para el intervalo de conjuntos de datos.
SlabAllocationBitMapLength
Número de valores de matriz de ULONG que contienen el mapa de bits de asignación de lalaba.
SlabAllocationBitMap[ANYSIZE_ARRAY]
Mapa de bits de asignaciones de lalabas.
Comentarios
La información de estado de aprovisionamiento se devuelve cuando el miembro Action de DEVICE_DSM_INPUT se establece en DeviceDsmAction_Allocation. El llamador debe incluir solo un intervalo de conjuntos de datos en el búfer del sistema en DataSetRangesOffset.
Al devolverlo, el búfer del sistema contiene una estructura de DEVICE_DSM_OUTPUT seguida de la estructura DEVICE_DATA_SET_LB_PROVISIONING_STATE. La estructura DEVICE_DATA_SET_LB_PROVISIONING_STATE comienza en un desplazamiento desde el principio del búfer del sistema especificado por OutputBlockOffset en DEVICE_DSM_OUTPUT.
Cada bit del mapa de bits de asignación representa una asignación de lalaba dentro del intervalo de conjuntos de datos solicitado. Los bits se corresponden directamente con los lalabas del intervalo de conjuntos de datos. Esto significa que el bit 0 del mapa de bits marca la primera lote del intervalo. Se asigna un lote si el valor de bit = 1 y no se asigna si el valor de bit = 0.
El espacio para SlabAllocationBitMap debe asignarse en función del número de posibles lalabas del intervalo de conjuntos de datos solicitado. El SlabAllocationBitMapLength del mapa de bits devuelto es (número de lalabas / 32) + ((número de lalabas MOD 32) > 0 ? 1 : 0).
El tamaño de lalaba viene determinado por el miembro OptimalUnmapGranularity de DEVICE_LB_PROVISIONING_DESCRIPTOR devuelto de una solicitud de IOCTL_STORAGE_QUERY_PROPERTY . La longitud del intervalo de conjunto de datos proporcionado debe ser un múltiplo de OptimalUnmapGranularity. Cuando la longitud del intervalo no es un múltiplo de OptimalUnmapGranularity, se reduce a ser un múltiplo.
Si el desplazamiento inicial del intervalo de conjuntos de datos no está alineado en un límite de lalaba, un múltiplo de OptimalUnmapGranularity, el desplazamiento se ajustará al siguiente límite. La diferencia entre el desplazamiento solicitado y el desplazamiento ajustado se devuelve en SlabOffsetDeltaInBytes.
Si el total de asignación de lalaba devuelto en SlabAllocationBitMapBitCount no es el esperado debido a los ajustes de longitud o alineación del intervalo de conjunto de datos, se puede enviar una solicitud adicional con un intervalo de conjuntos de datos modificado según los valores de SlabAllocationBitMapBitCount y SlabOffsetDeltaInBytes. El nuevo intervalo seleccionará correctamente las loslabas que quedan fuera del mapa de bits devuelto por la solicitud anterior.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 8. |
Encabezado | ntddstor.h (incluya Ntddstor.h) |
Consulte también
descripciones de DEVICE_DSM_ACTION