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_INPUTAction メンバーが 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 の場合はマップ解除されます。

スラブ割り当てBitMap の領域は、要求されたデータ セット範囲で使用可能なスラブの数に基づいて割り当てる必要があります。 返されるビットマップの SlabAllocationBitMapLength は (スラブの数 / 32) + ((スラブ数 MOD 32) > 0 ですか? 1 : 0).

スラブ サイズは、IOCTL_STORAGE_QUERY_PROPERTY要求から返されるDEVICE_LB_PROVISIONING_DESCRIPTOROptimalUnmapGranularity メンバーによって決まります。 指定するデータ セット範囲の長さは、 OptimalUnmapGranularity の倍数である必要があります。 範囲の長さが OptimalUnmapGranularity の倍数でない場合は、倍数に減らされます。

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

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

要件

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

こちらもご覧ください

DEVICE_DSM_ACTION の説明

DEVICE_DSM_INPUT

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES

IOCTL_STORAGE_QUERY_PROPERTY