다음을 통해 공유


장치 드라이버에 대한 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 다시 매핑은 그래픽 디바이스 드라이버에 대해 지원되지 않습니다.

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

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

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

디바이스 관리자 세부 정보 탭.

메모

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