Condividi tramite


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;

Membri

Size

Dimensioni di questa struttura, inclusa la bitmap di allocazione delle lastre, 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 ULONG valori di matrice contenenti la bitmap di allocazione delle lastre.

SlabAllocationBitMap[ANYSIZE_ARRAY]

Bitmap di allocazioni di lastre.

Osservazioni

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 con un offset dall'inizio del buffer di sistema specificato da OutputBlockOffset in DEVICE_DSM_OUTPUT.

Ogni bit nella bitmap di allocazione rappresenta un mapping di lastre 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 possibili lastre nell'intervallo del set di dati richiesto. Il SlabAllocationBitMapLength della bitmap restituita è (numero di lastre / 32) + ((numero di lastre MOD 32) > 0 ? 1 : 0).

Le dimensioni delle lastre sono determinate 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 di lastre, un multiplo di OptimalUnmapGranularity, l'offset verrà regolato al limite successivo. La differenza tra l'offset richiesto e l'offset regolato viene restituito in SlabOffsetDeltaInBytes.

Se il totale di allocazione delle lastre restituito in SlabAllocationBitMapBitCount non è come previsto a causa di modifiche all'allineamento o alla lunghezza dell'intervallo di dati, è possibile inviare una richiesta aggiuntiva con un intervallo 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.

Fabbisogno

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

Vedere anche

DEVICE_DSM_ACTION descrizioni

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY