DEVICE_DATA_SET_LB_PROVISIONING_STATE 結構 (ntddstor.h)
要求數據集範圍的邏輯區塊布建資訊時 ,IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 要求會傳回DEVICE_DATA_SET_LB_PROVISIONING_STATE結構。
語法
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;
成員
Size
此結構的大小,包括平板配置位圖,以位元組為單位。
Version
這個結構的版本。
SlabSizeInBytes
平板的大小,以位元組為單位。
SlabOffsetDeltaInBytes
從數據集範圍中指定的位移到起始平板位置的差異,以位元組為單位。
SlabAllocationBitMapBitCount
數據集範圍的配置位圖對應平板中的位數。
SlabAllocationBitMapLength
包含平板配置位圖的 ULONG 數位數目。
SlabAllocationBitMap[ANYSIZE_ARRAY]
平板配置的點陣圖。
備註
當DEVICE_DSM_INPUT的 Action 成員設定為 DeviceDsmAction_Allocation 時,會傳回布建狀態資訊。 呼叫端應該只會在 DataSetRangesOffset 的系統緩衝區中包含一個數據集範圍。
傳回時,系統緩衝區包含 DEVICE_DSM_OUTPUT 結構,後面接著DEVICE_DATA_SET_LB_PROVISIONING_STATE結構。 DEVICE_DATA_SET_LB_PROVISIONING_STATE結構會從 outputBlockOffset 在 DEVICE_DSM_OUTPUT 中指定的系統緩衝區開頭開始。
配置位圖中的每個位都代表所要求數據集範圍內的平板對應。 位會直接對應至數據集範圍內的平板。 這表示位圖中的位0會標示範圍中的第一個平板。 如果位值 = 1,而且如果位值 = 0,則會對應平板。
SlabAllocationBitMap 的空間應該根據所要求數據集範圍內的可能平板數目來配置。 傳回之點陣圖的 SlabAllocationBitMapLength 是 (個 slabs / 32) + ( (個平板 數目 MOD 32) > 0 ? 1 : 0) 。
平板大小是由從IOCTL_STORAGE_QUERY_PROPERTY要求傳回之DEVICE_LB_PROVISIONING_DESCRIPTOR的 OptimalUnmapGranularity 成員所決定。 提供的數據集範圍的長度應該是 OptimalUnmapGranularity 的倍數。 當範圍長度不是 OptimalUnmapGranularity 的倍數時,它會縮減為倍數。
如果數據集範圍的起始位移未對齊平板界限, 則為OptimalUnmapGranularity的倍數,則會將位移調整為下一個界限。 在 SlabOffsetDeltaInBytes 中會傳回所要求的位移和調整位移之間的差異。
如果 SlabAllocationBitMapBitCount 中傳回的平板配置總計未如預期般,因為數據集範圍對齊或長度調整,可能會根據 SlabAllocationBitMapBitCount 和 SlabOffsetDeltaInBytes 中的值來提交額外的要求。 新範圍會正確選取上一個要求所傳回之點陣圖剩餘的平板。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
標頭 | ntddstor.h (包含 Ntddstor.h) |