DEVICE_DATA_SET_LB_PROVISIONING_STATE struttura (winioctl.h)
Struttura di output per l'azione DeviceDsmAction_Allocation del codice di controllo IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES .
Sintassi
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;
Members
Size
Dimensioni di questa struttura, inclusa la bitmap, in byte.
Version
Versione di questa struttura.
SlabSizeInBytes
Dimensioni di una lastra, in byte.
SlabOffsetDeltaInBytes
Se l'intervallo specificato non è allineato alla struttura OptimalUnmapGranularity come restituito nella struttura DEVICE_LB_PROVISIONING_DESCRIPTOR , i dati rappresentati in SlabAllocationBitMap vengono offset dall'intervallo specificato in base a questa quantità.
SlabAllocationBitMapBitCount
Numero di bit rilevanti nella bitmap.
SlabAllocationBitMapLength
Numero di SWORDnella matrice bitmap.
SlabAllocationBitMap[ANYSIZE_ARRAY]
Bitmap di allocazione contenente un bit per ogni slab. Se viene impostato un bit, viene allocato il slab corrispondente. In caso contrario, se un bit è chiaro, lo slab corrispondente non viene allocato.
Commenti
Le informazioni sullo stato di provisioning vengono restituite quando il membro Action della struttura DEVICE_MANAGE_DATA_SET_ATTRIBUTES è 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_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT seguita dalla struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE . La struttura DEVICE_DATA_SET_LB_PROVISIONING_STATE inizia a un offset dall'inizio del buffer di sistema specificato da OutputBlockOffset in DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT.
Ogni bit nella bitmap di allocazione rappresenta un mapping di slab all'interno dell'intervallo di set di dati richiesto. I bit corrispondono direttamente ai lalabi nell'intervallo del set di dati. Ciò significa che il bit 0 nella bitmap contrassegna il primo slab nell'intervallo. Un slab viene mappato se il valore bit = 1 e non è stato eseguito il mapping se il valore di bit = 0.
Lo spazio per SlabAllocationBitMap deve essere allocato in base al numero di possibililabi nell'intervallo di set di dati richiesto. SlabAllocationBitMapLength della bitmap restituita è (number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0)
.
Le dimensioni dellab vengono determinate dal membro OptimalUnmapGranularity della struttura DEVICE_LB_PROVISIONING_DESCRIPTOR restituita da un codice di controllo IOCTL_STORAGE_QUERY_PROPERTY . La lunghezza dell'intervallo del set di dati fornito 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 a un limite di slab, un multiplo di OptimalUnmapGranularity, l'offset verrà modificato al limite successivo. La differenza tra l'offset richiesto e l'offset corretto viene restituito in SlabOffsetDeltaInBytes.
Se il totale dell'allocazione del lab restituito in SlabAllocationBitMapBitCount non è previsto a causa dell'allineamento o della 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 seleziona correttamente i slabi lasciati fuori dalla bitmap restituita dalla richiesta precedente.
Se la dimensione della lastra richiesta è troppo grande ,ad esempio se è maggiore della lunghezza massima di trasferimento dell'HBA, il IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES può non riuscire con ERROR_INVALID_PARAMETER.
Requisiti
Client minimo supportato | Windows 8 |
Server minimo supportato | Windows Server 2012 |
Intestazione | winioctl.h (include Windows.h) |
Vedi anche
DEVICE_LB_PROVISIONING_DESCRIPTOR