DEVICE_DATA_SET_LB_PROVISIONING_STATE結構 (winioctl.h)

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES控制項程式碼之DeviceDsmAction_Allocation動作的輸出結構。

語法

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;

成員

Size

這個結構的大小,包括點陣圖,以位元組為單位。

Version

這個 結構的版本。

SlabSizeInBytes

平板的大小,以位元組為單位。

SlabOffsetDeltaInBytes

如果指定的範圍未對齊在DEVICE_LB_PROVISIONING_DESCRIPTOR結構中所傳回的OptimalUnmapGranularity則 SlabAllocationBitMap中代表的資料會從這個數量所指定的範圍位移。

SlabAllocationBitMapBitCount

點陣圖中相關位的數目。

SlabAllocationBitMapLength

點陣圖陣列中的 DWORD數目。

SlabAllocationBitMap[ANYSIZE_ARRAY]

配置點陣圖,包含每個平板的一個位。 如果設定了位,則會配置對應的平板。 否則,如果位是清楚的,對應的平板就會取消配置。

備註

DEVICE_MANAGE_DATA_SET_ATTRIBUTES結構的Action成員設定為DeviceDsmAction_Allocation時,就會傳回布建狀態資訊。 呼叫端應該只會在 DataSetRangesOffset的系統緩衝區中包含一個資料集範圍。

傳回時,系統緩衝區包含 DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT 結構,後面接著 DEVICE_DATA_SET_LB_PROVISIONING_STATE 結構。 DEVICE_DATA_SET_LB_PROVISIONING_STATE結構會從outputBlockOffsetDEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT中指定的系統緩衝區開頭開始位移。

配置點陣圖中的每個位都代表所要求資料集範圍內的平板對應。 位會直接對應至資料集範圍內的平板。 這表示點陣圖中的位 0 會標示範圍中的第一個平板。 如果位值 = 1,而且如果位值 = 0,則會對應平板。

SlabAllocationBitMap的空間應該根據所要求資料集範圍內的可能平板數目來配置。 傳回之點陣圖的 SlabAllocationBitMapLength(number_of_slabs / 32) + ((number_of_slabs MOD 32) > 0 ? 1 : 0)

平板大小是由從IOCTL_STORAGE_QUERY_PROPERTY控制項程式碼傳回之DEVICE_LB_PROVISIONING_DESCRIPTOR結構的OptimalUnmapGranularity成員所決定。 提供的資料集範圍的長度應該是 OptimalUnmapGranularity的倍數。 當範圍長度不是 OptimalUnmapGranularity的倍數時,它會縮減為倍數。

如果資料集範圍的起始位移未對齊平板界限, 則為 OptimalUnmapGranularity的倍數,則會將位移調整為下一個界限。 在 SlabOffsetDeltaInBytes中會傳回所要求的位移和調整位移之間的差異。

如果 SlabAllocationBitMapBitCount 中傳回的平板配置總計未如預期般,因為資料集範圍對齊或長度調整,可能會根據 SlabAllocationBitMapBitCountSlabOffsetDeltaInBytes中的值來提交額外的要求。 新範圍會正確選取上一個要求所傳回之點陣圖剩餘的平板。

例如,如果要求的平板大小太大, (例如,如果大於 HBA) 的最大傳輸長度,則IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES可能會失敗並ERROR_INVALID_PARAMETER。

規格需求

   
最低支援的用戶端 Windows 8
最低支援的伺服器 Windows Server 2012
標頭 winioctl.h (包含 Windows.h)

另請參閱

DEVICE_LB_PROVISIONING_DESCRIPTOR

裝置管理 結構

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES