DEVICE_DATA_SET_LB_PROVISIONING_STATE構造体 (ntddstor.h)

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_DESCRIPTOROptimalUnmapGranularity メンバーによって決まります。 指定するデータ セット範囲の長さは 、OptimalUnmapGranularity の倍数である必要があります。 範囲の長さが OptimalUnmapGranularity の倍数でない場合は、倍数になるように縮小されます。

データ セット範囲の開始オフセットがスラブ境界 ( OptimalUnmapGranularity の倍数) に揃っていない場合、オフセットは次の境界に調整されます。 要求されたオフセットと調整されたオフセットの差は 、SlabOffsetDeltaInBytes で返されます。

データ セット範囲のアラインメントまたは長さの調整のために 、SlabAllocationBitMapBitCount で返されるスラブ割り当ての合計が期待どおりでない場合は、 SlabAllocationBitMapBitCountSlabOffsetDeltaInBytes の両方の値に従って変更されたデータ セット範囲で追加の要求を送信できます。 新しい範囲では、前の要求によって返されたビットマップから除外されたスラブが適切に選択されます。

要件

   
サポートされている最小のクライアント Windows 8 以降で使用できます。
Header ntddstor.h (Ntddstor.h を含む)

こちらもご覧ください

DEVICE_DSM_ACTION の説明

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY