다음을 통해 공유


장치 드라이버에 대한 DMA 리매핑 활성화

커널 DMA ProtectionDMAGuard 정책호환성을 보장하기 위해 PCIe 디바이스 드라이버는 DMA(직접 메모리 액세스) 다시 매핑을 옵트인할 수 있습니다.

디바이스 드라이버에 대한 DMA 다시 매핑은 메모리 손상 및 악의적인 DMA 공격으로부터 보호하고 디바이스에 대해 더 높은 수준의 호환성을 제공합니다. 또한 DMA 다시 매핑 호환 드라이버가 있는 디바이스는 잠금 화면 상태에 관계없이 DMA를 시작하고 수행할 수 있습니다.

커널 DMA 보호가 활성화된 시스템에서는 시스템 관리자가 설정한 정책 값에 따라 DMAGuard 정책이, DMA 다시 매핑과 호환되지 않는 드라이버가 연결된 외부/장치들을 PCIe 포트(예: M.2, Thunderbolt)에 차단할 수 있습니다.

DMA 다시 매핑을 사용하도록 설정하고 옵트인하기 위한 드라이버 요구 사항

드라이버는 다음 인터페이스를 사용하여 DMA를 수행합니다.

드라이버에 대한 DMA 다시 매핑 정책을 조정하려면 INF 지시문을 추가합니다. 디바이스당(권장 및 기본 설정) 메커니즘과 드라이버당(레거시) 메커니즘의 두 가지 가능한 방법이 있습니다.

디바이스별 옵트인 메커니즘

Windows 24H2 이상 버전의 경우 디바이스별 이 메서드를 사용합니다. 디바이스별 옵트인은 드라이버별 레거시 메서드를 재정의합니다. 예를 들어, RemappingSupported가 설정되고 존재하는 경우, DmaRemappingCompatible 키가 무시됩니다.

디바이스 열거형 섹션에 다음과 같은 INF 지시문을 추가합니다.

[MyDriver_Device.NT.HW]
AddReg=DMA_Remapping_OptIn_AddReg

[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1

DMA Management\RemappingSupported의 유효한 값:

의미
0 옵트아웃( 옵트아웃)은 디바이스와 드라이버가 DMA 다시 매핑과 호환되지 않음을 나타냅니다.
1 옵트인은 디바이스 및 드라이버가 DMA 다시 매핑과 완전히 호환된다는 것을 나타냅니다.
레지스트리 키 없음 시스템에서 정책을 결정하도록 합니다.

필요에 따라 RemappingFlags를 추가하여 동작을 추가로 제어할 수 있습니다.

[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1
HKR,"DMA Management","RemappingFlags",0x00010001,0x00000001

DMA Management\RemappingFlags유효한 값은 다음과 같습니다.

의미
0 RemappingSupported가 1이면 무조건 옵트인합니다.
1 RemappingSupported가 1이면 옵트인하지만 다음 조건 중 하나 이상이 충족되는 경우에만 옵트인합니다. A. 디바이스는 외부 디바이스입니다(예: Thunderbolt). B. 드라이버 검증 도구에서 DMA 확인이 사용하도록 설정됨
레지스트리 키 없음 0 값과 같습니다.

이러한 레지스트리 키는 열거형 트리 아래에 표시됩니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device instance path>\Device Parameters\DMA Management

드라이버별 옵트인 메커니즘

Windows 11 23H2까지의 Windows 버전에만 이 드라이버별 메서드를 사용합니다. 디바이스별 메서드를 사용합니다.

서비스 설치 섹션에 다음과 같은 INF 지시문을 추가합니다.

[MyServiceInstall_AddReg]
HKR,Parameters,DmaRemappingCompatible,0x00010001,1    ; where 1 = opt in

DmaRemappingCompatible유효한 값은 다음과 같습니다.

의미
0 옵트아웃( 옵트아웃)은 드라이버가 DMA 다시 매핑과 호환되지 않음을 나타냅니다.
1 옵트인은 드라이버가 DMA 다시 매핑과 완전히 호환된다는 것을 나타냅니다.
2 옵트인하지만 다음 조건 중 하나 이상이 충족되는 경우에만 A. 디바이스는 외부 디바이스입니다(예: Thunderbolt). B. 드라이버 검증 도구에서 DMA 확인이 사용하도록 설정됨
3 사용 동의
레지스트리 키 없음 시스템에서 정책을 결정하도록 합니다.

드라이버를 테스트할 때 드라이버 검증 도구를 사용하도록 설정합니다. 드라이버 검증 도구에서 테스트하기 위해 외부 디바이스를 옵트인하기 위한 INF 지시문 값이 1로 승격됩니다.

레지스트리 키가 서비스 설치 트리 아래에 표시됩니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters.

경고

DMA 다시 매핑은 그래픽 디바이스 드라이버에 대해 지원되지 않습니다.

메모

값 3에 대한 지원이 Windows 11에 추가되었습니다. 이 기능은 Windows 10 디바이스에서 3이 아닌 2 값을 보여 주는 해당 지원이 없는 Windows 10에서 정상적으로 저하되도록 설계되었습니다.

특정 디바이스 드라이버 인스턴스에 대해 DMA 다시 매핑이 사용하도록 설정되어 있는지 확인

VT-d/AMD-Vi 사용하도록 설정된 최신 Windows 빌드를 사용하여 Intel x64 및 AMD64 시스템에서 드라이버 기능을 테스트합니다.

특정 드라이버가 DMA 다시 매핑을 선택했는지 확인하려면 디바이스의 세부 정보 탭에서 DMA 다시 매핑 정책 속성에 해당하는 값을 디바이스 관리자에서 확인합니다. 드라이버는 DEVPKEY_Device_DmaRemappingPolicy 속성을 쿼리하여 디바이스의 DMA 다시 매핑 기능을 확인할 수 있습니다. 해당 페이지에서 잠재적 반환 값을 확인하고 이러한 반환 값은 이전 섹션에 나열된 DmaRemappingCompatible 값과 동일하지 않습니다.

PCI 디바이스에 대한 DMA 다시 매핑 정책 속성을 보여 주는 디바이스 관리자 세부 정보 탭의 스크린샷

메모

Windows 10 버전 1803 및 1809의 경우 Device Manager의 속성 필드는 GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]