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을 처리하는 경우 다음 하위 드라이버에 IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES 요청을 전달하기 전에 DataSetRangesOffsetDataSetRangesLength 멤버에 의해 지정된 데이터 집합 범위 블록의 정상적인 처리를 수행해야 합니다.

Flags

이러한 플래그는 모든 컨트롤 작업에 전역입니다. 이 멤버는 다음 플래그 중 하나로 설정할 수 있습니다.

플래그 값 의미
DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE 컨트롤 작업은 데이터 집합 범위의 전체 블록에 대해 지정됩니다. 이 플래그가 설정되면 DataSetRangesOffsetDataSetRangesLength 멤버를 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 구조체로 서식이 지정된 하나 이상의 연속 항목으로 구성됩니다. 참고: 데이터 집합 범위 블록의 오프셋은 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이어야 합니다.

데이터 집합 범위의 블록은 DataSetRangesOffsetDataSetRangesLength 멤버에 의해 지정됩니다. 이 블록이 있으면 연속된 DEVICE_DSM_RANGE 구조체가 포함됩니다.

요구 사항

요구 사항
헤더 ntddstor.h(Ntddstor.h 포함)

추가 정보

데이터 세트 관리 개요

DEVICE_DSM_ACTION 설명

DEVICE_DSM_RANGE

IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES