struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE (ntddstor.h)

La struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE viene restituita da una richiesta di IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES quando si richiedono informazioni di provisioning di blocchi logici per un intervallo di set di dati.

Sintassi

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;

Members

Size

Dimensioni di questa struttura, inclusa la bitmap di allocazione della lastra, in byte.

Version

Versione di questa struttura.

SlabSizeInBytes

Dimensione, in byte, di una lastra.

SlabOffsetDeltaInBytes

Differenza, in byte, dall'offset specificato nell'intervallo del set di dati alla posizione della lastra iniziale.

SlabAllocationBitMapBitCount

Numero di bit nelle lastre di mapping bitmap di allocazione per l'intervallo di set di dati.

SlabAllocationBitMapLength

Numero di valori di matrice ULONG contenenti la bitmap di allocazione della lastra.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Bitmap di allocazioni della lastra.

Commenti

Le informazioni sullo stato di provisioning vengono restituite quando il membro Action di DEVICE_DSM_INPUT è impostato su DeviceDsmAction_Allocation. Il chiamante deve includere un solo intervallo di set di dati nel buffer di sistema in DataSetRangesOffset.

In caso di restituzione, il buffer di sistema contiene una struttura DEVICE_DSM_OUTPUT seguita dalla struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE. La struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE inizia in corrispondenza di un offset dall'inizio del buffer di sistema specificato da OutputBlockOffset in DEVICE_DSM_OUTPUT.

Ogni bit nella bitmap di allocazione rappresenta un mapping della lastra all'interno dell'intervallo del set di dati richiesto. I bit corrispondono direttamente alle lastre nell'intervallo del set di dati. Ciò significa che il bit 0 nella bitmap contrassegna la prima lastra nell'intervallo. Viene eseguito il mapping di una lastra se il valore di bit = 1 e non mappato se il valore di bit = 0.

Lo spazio per SlabAllocationBitMap deve essere allocato in base al numero di lastre possibili nell'intervallo del set di dati richiesto. SlabAllocationBitMapLength della bitmap restituita è (numero di lastre / 32) + ((numero di lastre MOD 32) > 0 ? 1 : 0).

La dimensione della lastra è determinata dal membro OptimalUnmapGranularity di DEVICE_LB_PROVISIONING_DESCRIPTOR restituito da una richiesta di IOCTL_STORAGE_QUERY_PROPERTY . La lunghezza dell'intervallo di set di dati specificato deve essere un multiplo di OptimalUnmapGranularity. Quando la lunghezza dell'intervallo non è un multiplo di OptimalUnmapGranularity, viene ridotta a essere un multiplo.

Se l'offset iniziale nell'intervallo del set di dati non è allineato su un limite della lastra, un multiplo di OptimalUnmapGranularity, l'offset verrà modificato al limite successivo. La differenza tra l'offset richiesto e l'offset regolato viene restituita in SlabOffsetDeltaInBytes.

Se il totale di allocazione della lastra restituito in SlabAllocationBitMapBitCount non è come previsto a causa di modifiche all'allineamento o alla lunghezza del set di dati, è possibile inviare una richiesta aggiuntiva con un intervallo di set di dati modificato in base ai valori in SlabAllocationBitMapBitCount e SlabOffsetDeltaInBytes. Il nuovo intervallo selezionerà correttamente le lastre lasciate dalla bitmap restituita dalla richiesta precedente.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Intestazione ntddstor.h (include Ntddstor.h)

Vedi anche

descrizioni DEVICE_DSM_ACTION

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY