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) |