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描述 。
如果動作中設定 了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 成員必須設定為零。 |
ParameterBlockOffset
指定 IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求承載 內的參數區塊開頭。 參數區塊的格式取決於 Action 成員的值。 如需參數區塊格式的詳細資訊,請參閱 DEVICE_DSM_ACTION描述。 注意:參數區塊的位移必須對齊對應參數的位址界限。
如果 ParameterBlockOffset 設定為零,則參數區塊不存在。
ParameterBlockLength
指定IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求承載內參數區塊的長度,以位元組為單位。
如果 ParameterBlockLength 設定為零,則參數區塊不存在。
DataSetRangesOffset
指定IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求承載內數據集範圍的區塊開頭。 此區塊包含一或多個連續專案,這些專案會格式化為 DEVICE_DSM_RANGE 結構。 注意:數據集範圍區塊的位移必須對齊DEVICE_DSM_RANGE結構的位址界限。
如果設定為零,則數據集範圍的區塊不存在。
DataSetRangesLength
指定IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES要求承載內數據集範圍的區塊長度,以位元組為單位。 如果 DataSetRangesLength 設定為零,數據集範圍的區塊就不存在。
備註
如需 IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 要求承載格式的詳細資訊,請參閱 數據集管理概觀。 緩衝區的大小總計至少應該是 sizeof(DEVICE_DSM_INPUT) + ParameterBlockLength + DataSetRangesLength
。
數據集範圍的區塊是由 DataSetRangesOffset 和 DataSetRangesLength 成員所指定。 如果此區塊存在,則會包含連續 DEVICE_DSM_RANGE 結構。
規格需求
需求 | 值 |
---|---|
標頭 | ntddstor.h (包含 Ntddstor.h) |