Habilitando o remapeamento DMA para drivers de dispositivo

Para garantir a compatibilidade com o Kernel DMA Protection e DMAGuard Policy, os drivers de dispositivo PCIe podem optar pelo remapeamento de Acesso Direto à Memória (DMA).

O remapeamento DMA para drivers de dispositivo protege contra corrupção de memória e ataques DMA mal-intencionados e fornece um nível mais alto de compatibilidade para dispositivos. Além disso, os dispositivos com drivers compatíveis com remapeamento DMA podem iniciar e executar DMA independentemente do status da tela de bloqueio.

Em sistemas habilitados para Proteção DMA do Kernel, a Política DMAGuard pode bloquear dispositivos, com drivers incompatíveis com o remapeamento DMA, conectados a portas PCIe expostas externas/(por exemplo, M.2, Thunderbolt™), dependendo do valor da política definido pelo administrador do sistema.

Requisitos de driver para habilitar e aceitar o remapeamento de DMA

Os drivers executam o DMA usando as seguintes interfaces:

Para ajustar a política de remapeamento DMA para o driver, adicione uma diretiva INF, como a seguinte, à seção de instalação do serviço:

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

Os valores válidos para DmaRemappingCompatible são:

Valor Significado
0 Desativar. Isso indica ao sistema que o driver é incompatível com o remapeamento DMA.
1 Opte por participar. Isso indica ao sistema que seu driver é totalmente compatível com o remapeamento DMA.
2 Opte por participar, mas somente quando uma ou mais das seguintes condições forem atendidas: A. Se o dispositivo for um dispositivo externo (por exemplo. Trovão); B. Se a verificação DMA estiver habilitada no Verificador de Driver.
Nenhuma chave do Registro Deixe que o sistema determine a política.

Ao testar o driver, habilite o Verificador de Driver. Para fins de teste no Driver Verifier, o valor da diretiva INF para optar por dispositivos externos é promovido para 1.

Use a compilação mais recente do Windows 10 com VT-d/AMD-Vi habilitado para testar a funcionalidade do driver nos sistemas Intel x64 e AMD64.

Aviso

O remapeamento DMA não é suportado para drivers de dispositivo gráfico.

O suporte para a versão 3 só está disponível no Windows 11. No Windows 10, se você especificar 3 no INF, o sistema retornará para um valor de 2.

Validando que o remapeamento DMA está habilitado para uma instância de driver de dispositivo específica

Para verificar se um driver específico optou pelo remapeamento de DMA, procure no Gerenciador de Dispositivos, na guia Detalhes do dispositivo, os valores correspondentes à propriedade de política de remapeamento de DMA. Um driver pode consultar a propriedade DEVPKEY_Device_DmaRemappingPolicy para determinar o recurso de remapeamento DMA do dispositivo. Consulte os valores de retorno potenciais nessa página e observe que esses valores de retorno não são os mesmos que os valores de DmaRemappingCompatible listados na seção anterior.

Guia Detalhes do Gerenciador de Dispositivos.

Observação

Para o Windows 10, versões 1803 e 1809, o campo de propriedade no Gerenciador de dispositivos usa um GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]