структура 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) |