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 指定的数据集范围块的正常处理,并在将IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES请求转发到下一个下一个下一个驱动程序之前,DataSetRangesLength 成员。
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) |