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の説明」を参照してください。
Action で DeviceDsmActionFlag_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 を含む) |