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 요청을 전달하기 전에 DataSetRangesOffset 및 DataSetRangesLength 멤버에 의해 지정된 데이터 집합 범위 블록의 정상적인 처리를 수행해야 합니다.
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 구조체로 서식이 지정된 하나 이상의 연속 항목으로 구성됩니다. 참고: 데이터 집합 범위 블록의 오프셋은 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 구조체가 포함됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddstor.h(Ntddstor.h 포함) |