DEVICE_MANAGE_DATA_SET_ATTRIBUTES 構造体 (ntddstor.h)

DEVICE_DSM_INPUT (またはDEVICE_MANAGE_DATA_SET_ATTRIBUTES) 構造体は、デバイスのデータ セット属性の管理アクションを指定します。

構文

typedef struct _DEVICE_MANAGE_DATA_SET_ATTRIBUTES {
  ULONG             Size;
  DEVICE_DSM_ACTION Action;
  ULONG             Flags;
  ULONG             ParameterBlockOffset;
  ULONG             ParameterBlockLength;
  ULONG             DataSetRangesOffset;
  ULONG             DataSetRangesLength;
} DEVICE_MANAGE_DATA_SET_ATTRIBUTES, *PDEVICE_MANAGE_DATA_SET_ATTRIBUTES, DEVICE_DSM_INPUT, *PDEVICE_DSM_INPUT;

メンバー

Size

DEVICE_DSM_INPUT構造体のサイズ (バイト単位)。 構造体にメンバーが追加されると、このメンバーの値が変更されます。

Action

実行するアクションを指定するDEVICE_DSM_ACTION値。 アクション 値と説明の一覧については、「DEVICE_DSM_ACTIONの説明」を参照してください。

ActionDeviceDsmActionFlag_NonDestructive フラグ (最上位ビット) が設定されている場合、指定されたアクションは非破壊的です。 非破壊的アクションの場合、ドライバーが指定した アクションを処理 しない場合でも、ドライバーはIOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求をスタック内の次の下位ドライバーに安全に転送できます。 ドライバーが DSM を処理する場合は、 DataSetRangesOffset メンバーと DataSetRangesLength メンバーによって指定されたデータ セット範囲ブロックの通常の処理を実行してから、IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求を次の下位ドライバーに転送する必要があります。

Flags

これらのフラグは、すべての制御アクションに対してグローバルです。 このメンバーは、次のいずれかのフラグに設定できます。

フラグ値 意味
DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE 制御アクションは、データ・セット範囲のブロック全体に対して指定されます。 このフラグが設定されている場合は、 DataSetRangesOffset メンバーと DataSetRangesLength メンバーを 0 に設定する必要があります。

ParameterBlockOffset

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求のペイロード内のパラメーター ブロックの開始を指定します。 パラメーター ブロックの形式は、 Action メンバーの値によって異なります。 パラメーター ブロック形式の詳細については、「 DEVICE_DSM_ACTION説明」を参照してください。 : パラメーター ブロックのオフセットは、対応するパラメーターのアドレス境界に配置する必要があります。

ParameterBlockOffset が 0 に設定されている場合、パラメーター ブロックは存在しません。

ParameterBlockLength

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求のペイロード内のパラメーター ブロックの長さをバイト単位で指定します。

ParameterBlockLength が 0 に設定されている場合、パラメーター ブロックは存在しません。

DataSetRangesOffset

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求のペイロード内のデータ セット範囲のブロックの開始を指定します。 このブロックは、 DEVICE_DSM_RANGE 構造体として書式設定された 1 つ以上の連続したエントリで構成されます。 : データ・セット範囲ブロックのオフセットは、DEVICE_DSM_RANGE構造体のアドレス境界に位置合わせする必要があります。

0 に設定すると、データ・セット範囲のブロックは存在しません。

DataSetRangesLength

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求のペイロード内のデータ セット範囲のブロックの長さをバイト単位で指定します。 DataSetRangesLength が 0 に設定されている場合、データ セット範囲のブロックは存在しません。

注釈

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求のペイロードの形式の詳細については、「データ セット管理の概要」を参照してください。 バッファーの合計サイズは、少なくとも sizeof(DEVICE_DSM_INPUT) + ParameterBlockLength + DataSetRangesLengthである必要があります。

データ セット範囲のブロックは、 DataSetRangesOffset メンバーと DataSetRangesLength メンバーによって指定されます。 このブロックが存在する場合は、連続した DEVICE_DSM_RANGE 構造が含まれます。

要件

要件
Header ntddstor.h (Ntddstor.h を含む)

こちらもご覧ください

データ セット管理の概要

DEVICE_DSM_ACTION の説明

DEVICE_DSM_RANGE

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES