DEVICE_DATA_SET_LB_PROVISIONING_STATE構造体は、データ セット範囲の論理ブロック プロビジョニング情報を要求するときに、IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 要求によって返されます。
構文
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のシステム バッファーに 1 つのデータ セット範囲のみを含める必要があります。
戻り値の場合、システム バッファーには、DEVICE_DSM_OUTPUT 構造体の後にDEVICE_DATA_SET_LB_PROVISIONING_STATE構造体が格納されます。 DEVICE_DATA_SET_LB_PROVISIONING_STATE構造体は、DEVICE_DSM_OUTPUTの OutputBlockOffset で指定 システム バッファーの先頭からのオフセットから始まります。
割り当てビットマップ内の各ビットは、要求されたデータ セット範囲内のスラブ マッピングを表します。 ビットは、データ セット範囲内のスラブに直接対応します。 これは、ビットマップ内のビット 0 が範囲内の最初のスラブをマークすることを意味します。 ビット値が 1 の場合はスラブがマップされ、ビット値が 0 の場合はマップ解除されます。
SlabAllocationBitMap の領域は、要求されたデータ セット範囲内で使用可能なスラブの数に基づいて割り当てる必要があります。 返されるビットマップの SlabAllocationBitMapLength は (スラブ数 / 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 を含む) |