DEVICE_DSM_ACTION 설명
이 페이지에서는 디바이스의 데이터 집합에서 DSM(데이터 세트 관리) 작업을 수행하는 데 사용할 수 있는 DEVICE_DSM_ACTION 상수에 대해 설명합니다. 이러한 상수는 ntddstor.h에 정의됩니다. 비대상으로 식별된 작업은 데이터를 변경하지 않습니다. DSM 작업이 처리되는 방법에 대한 자세한 내용은 데이터 세트 관리 개요 를 참조하세요.
DEVICE_DSM_ACTION 상수 | Description |
---|---|
DeviceDsmAction_None | 구조 초기화 용도로만 사용됩니다. |
DeviceDsmAction_Trim | 드라이버는 트리밍 작업을 수행합니다. |
DeviceDsmAction_Notification | 비파괴. 드라이버는 알림 작업을 수행합니다. 이 작업의 경우 DEVICE_DSM_INPUT 구조 바로 뒤의 매개 변수 블록은 DEVICE_DSM_NOTIFICATION_PARAMETERS 구조체로 형식이 지정됩니다. Windows 7 이상 버전에서 지원됩니다. |
DeviceDsmAction_OffloadRead | 비파괴. 드라이버는 오프로드 읽기 작업을 수행합니다. 이 작업의 경우 DEVICE_DSM_INPUT 구조 바로 뒤의 매개 변수 블록은 DEVICE_DSM_OFFLOAD_READ_PARAMETERS 구조체로 형식이 지정됩니다. 출력은 DEVICE_DSM_OUTPUT 구조체와 STORAGE_OFFLOAD_READ_OUTPUT 구조로 구성됩니다. Windows 8 이상 버전에서 지원됩니다. |
DeviceDsmAction_OffloadWrite | 드라이버는 오프로드 쓰기 작업을 수행합니다. 이 작업의 경우 DEVICE_DSM_INPUT 구조 바로 뒤의 매개 변수 블록은 DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS 구조체로 형식이 지정됩니다. 출력은 DEVICE_DSM_OUTPUT 구조체와 STORAGE_OFFLOAD_WRITE_OUTPUT 구조로 구성됩니다. Windows 8 이상 버전에서 지원됩니다. |
DeviceDsmAction_Allocation | 비파괴. 드라이버는 논리적 블록 프로비저닝 작업을 수행합니다. 논리 블록 범위는 단일 DEVICE_DSM_RANGE 구조체에 지정됩니다. Windows 8 이상 버전에서 지원됩니다. |
DeviceDsmAction_Repair | 비파괴. 내부 전용입니다. |
DeviceDsmAction_Scrub | 비파괴. 내부 전용입니다. |
DeviceDsmAction_DrtQuery | 비파괴. 내부 전용입니다. |
DeviceDsmAction_DrtClear | 비파괴. 내부 전용입니다. |
DeviceDsmAction_DrtDisable | 비파괴. 내부 전용입니다. |
DeviceDsmAction_TieringQuery | 비파괴. 내부 전용입니다. |
DeviceDsmAction_Map | 비파괴. 내부 전용입니다. |
DeviceDsmAction_RegenerateParity | 비파괴. 내부 전용입니다. |
DeviceDsmAction_NvCache_Change_Priority | 비파괴. 드라이버는 지정된 논리 블록 범위의 캐싱 우선 순위를 변경합니다. 새 대상 우선 순위는 DEVICE_DSM_INPUT 구조 바로 뒤의 매개 변수 블록에 있는 DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS 구조체에서 설정됩니다. 우선 순위를 변경할 논리 블록 범위는 하나 이상의 DEVICE_DSM_RANGE 구조에 지정됩니다. Windows 8.1 이상 버전에서 지원됩니다. |
DeviceDsmAction_NvCache_Evict | 비파괴. 드라이버는 캐싱 매체에서 데이터를 제거합니다. 모든 데이터를 제거하려면 DEVICE_DSM_INPUT Flags 멤버에서 DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE 플래그를 설정하고 DEVICE_DSM_RANGE 구조를 포함하지 않습니다. 제거할 특정 논리 블록 범위는 하나 이상의 DEVICE_DSM_RANGE 구조에 제공됩니다. DeviceDsmAction_NvCache_Evict 작업은 동기적으로 실행됩니다. 제거 작업이 성공하거나 실패할 때까지 다른 작업이 수행되지 않습니다. 디바이스를 사용하는 애플리케이션에 미치는 영향을 제한하려면 실행된 각 DeviceDsmAction_NvCache_Evict 작업에는 비교적 작은 데이터 범위가 포함되어야 합니다. 10MB를 초과해서는 안 되며 이상적으로는 2MB보다 작아야 합니다. 이렇게 하면 디바이스의 데이터에 액세스할 때 사용자 수준 애플리케이션에서 눈에 띄는 지연이 발생할 가능성이 최소화됩니다. Windows 8.1 이상 버전에서 지원됩니다. |
DeviceDsmAction_TopologyIdQuery | 비파괴. 내부 전용입니다. |
DeviceDsmAction_GetPhysicalAddresses | 비파괴. 드라이버는 하나 이상의 논리 블록 범위에 해당하는 실제 주소 범위를 반환합니다. 이 작업은 영구 메모리 디스크에서만 지원됩니다. 논리 블록 범위는 DEVICE_DSM_INPUT 구조 바로 다음에 일련의 DEVICE_DSM_RANGE 구조체로 지정됩니다. 출력은 DEVICE_DSM_OUTPUT 구조체와 안쪽 여백, 출력 블록에서 요청된 실제 주소 범위가 있는 DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT 구조로 구성됩니다. 각 실제 주소 범위는 DEVICE_STORAGE_ADDRESS_RANGE 구조로 반환됩니다. 출력 버퍼가 모든 데이터를 저장할 만큼 크지 않은 경우 DSM은 STATUS_BUFFER_OVERFLOW 반환하고 DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT 구조체의 TotalNumberOfRanges 필드에는 요청을 충족하는 데 필요한 DEVICE_STORAGE_ADDRESS_RANGE 요소 수가 포함됩니다. 메모리 오류가 포함된 실제 주소 범위는 해당 주소로 DEVICE_DSM_PHYSICAL_ADDRESS_HAS_MEMORY_ERROR. 애플리케이션은 반환된 각 실제 주소 범위의 길이를 추적하여 반환된 실제 주소 범위를 입력 논리 블록 범위에 매핑할 수 있습니다. 단일 논리 블록 범위는 많은 실제 주소 범위에 해당할 수 있습니다. DEVICE_DSM_FLAG_PHYSICAL_ADDRESSES_OMIT_TOTAL_RANGES DEVICE_DSM_INPUT 구조체의 Flags 필드에 설정된 경우 드라이버는 TotalNumberOfRanges를 계산하지 않습니다. 이는 총 범위 수를 알 필요가 없는 호출자를 위한 성능 최적화입니다. |
DeviceDsmAction_ScopeRegen | 비파괴. 내부 전용입니다. |
DeviceDsmAction_ReportZones | 비파괴. 내부 전용입니다. |
DeviceDsmAction_OpenZone | 비파괴. 내부 전용입니다. |
DeviceDsmAction_FinishZone | 비파괴. 내부 전용입니다. |
DeviceDsmAction_CloseZone | 비파괴. 내부 전용입니다. |
DeviceDsmAction_ResetWritePointer | 내부 전용입니다. |
DeviceDsmAction_GetRangeErrorInfo | 비파괴. 드라이버는 하나 이상의 논리 블록 범위에 미디어 오류가 포함되어 있는지 여부에 대한 정보를 반환합니다. 영구 메모리 디스크에서만 지원됩니다. 논리 블록 범위는 DEVICE_DSM_INPUT 구조 바로 다음에 일련의 DEVICE_DSM_RANGE 구조체로 지정됩니다. 출력은 DEVICE_DSM_OUTPUT 구조체와 패딩, DEVICE_STORAGE_RANGE_ATTRIBUTES 배열을 포함하는 DEVICE_DSM_RANGE_ERROR_OUTPUT) 구조로 구성됩니다. 출력 버퍼가 모든 데이터를 저장할 만큼 크지 않은 경우 DSM은 STATUS_BUFFER_OVERFLOW 반환하고 DEVICE_DSM_RANGE_ERROR_OUTPUT 구조체의 TotalNumberOfRanges 필드에는 요청을 충족하는 데 필요한 DEVICE_STORAGE_RANGE_ATTRIBUTES 요소 수가 포함됩니다. 각 DEVICE_STORAGE_RANGE_ATTRIBUTES 구조체에는 IsRangeBad 필드가 포함됩니다. 드라이버는 논리 블록 범위에 미디어 오류가 포함된 경우 해당 필드를 1로 설정합니다. 요청된 범위에 미디어 오류가 없으면 드라이버는 DEVICE_DSM_RANGE_ERROR_OUTPUT 플래그 필드에 DEVICE_STORAGE_NO_ERRORS 설정합니다. DEVICE_STORAGE_RANGE_ATTRIBUTES 배열의 요소는 순서가 입력 범위의 순서에 해당하도록 정렬됩니다. 예를 들어 첫 번째 입력 범위가 3개의 출력 범위로 나뉘어진 경우 배열의 처음 3개 범위가 됩니다. 호출자는 출력 범위의 길이를 추적하여 입력 범위에 해당하는 출력 범위를 학습할 수 있습니다. |
DeviceDsmAction_WriteZeroes | 내부 전용입니다. |
DeviceDsmAction_LostQuery | 비파괴. 내부 전용입니다. |
DeviceDsmAction_GetFreeSpace | 비파괴. 내부 전용입니다. |
DeviceDsmAction_ConversionQuery | 비파괴. 내부 전용입니다. |