Compartir a través de


estructura DEVICE_DATA_SET_LB_PROVISIONING_STATE (winioctl.h)

Estructura de salida para la acción DeviceDsmAction_Allocation del código de control IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES .

Sintaxis

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;

Miembros

Size

Tamaño de esta estructura, incluido el mapa de bits, en bytes.

Version

Versión de esta estructura.

SlabSizeInBytes

Tamaño de una lalaba, en bytes.

SlabOffsetDeltaInBytes

Si el intervalo especificado no está alineado con la optimalUnmapGranularity tal como se devuelve en DEVICE_LB_PROVISIONING_DESCRIPTOR estructura, los datos representados en SlabAllocationBitMap se desplazan del intervalo especificado por esta cantidad.

SlabAllocationBitMapBitCount

Número de bits relevantes en el mapa de bits.

SlabAllocationBitMapLength

Número de DWORDs en la matriz de mapa de bits.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Mapa de bits de asignación que contiene un bit para cada lalaba. Si se establece un bit, se asigna el lote correspondiente. De lo contrario, si un bit está claro, el lalaba correspondiente no está asignada.

Comentarios

La información del estado de aprovisionamiento se devuelve cuando el miembro Action de la estructura de DEVICE_MANAGE_DATA_SET_ATTRIBUTES se establece en DeviceDsmAction_Allocation. El llamador debe incluir solo un intervalo de conjuntos de datos en el búfer del sistema en DataSetRangesOffset.

A cambio, el búfer del sistema contiene una estructura de DEVICE_MANAGE_DATA_SET_ATTRIBUTES_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_MANAGE_DATA_SET_ATTRIBUTES_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. SlabAllocationBitMapLength del mapa de bits devuelto es (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0).

El tamaño de lalaba viene determinado por el miembro OptimalUnmapGranularity de la estructura DEVICE_LB_PROVISIONING_DESCRIPTOR devuelta desde un código de control 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.

Si el tamaño de lalaba solicitado es demasiado grande (por ejemplo, si es mayor que la longitud máxima de transferencia del HBA), el IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES puede producir un error con ERROR_INVALID_PARAMETER.

Requisitos

   
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Encabezado winioctl.h (incluya Windows.h)

Consulte también

DEVICE_LB_PROVISIONING_DESCRIPTOR

Estructuras de Administración de dispositivos

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES