Compartilhar via


Habilitar o remapeamento de DMA para drivers de dispositivo

Para garantir a compatibilidade com a Proteção contra DMA do Kernel e a Política do DMAGuard, os drivers de dispositivo PCIe podem optar pelo remapeamento do DMA (Acesso Direto à Memória).

O remapeamento de DMA para drivers de dispositivo oferece proteção contra corrupção de memória e ataques de DMA maliciosos, além de fornecer um nível mais alto de compatibilidade para dispositivos. Além disso, dispositivos com drivers compatíveis com remapeamento de DMA podem iniciar e executar DMA, independentemente do status da tela de bloqueio.

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

Requisitos do driver para habilitar e optar pelo remapeamento de DMA

Os drivers executam o DMA usando as seguintes interfaces:

Para ajustar a política de remapeamento de DMA do driver, adicione uma diretiva INF. Há dois métodos possíveis: um mecanismo por dispositivo (recomendado e preferido) e um mecanismo por controlador (herdado).

Mecanismo de consentimento por dispositivo

Para o Windows 24H2 e versões posteriores, use esse método por dispositivo. A aceitação por dispositivo substitui o método herdado por driver, se presente (por exemplo, a chave DmaRemappingCompatible será ignorada se RemappingSupported estiver definido).

Adicione uma diretiva INF, como a seguinte, à seção de enumeração do dispositivo:

[MyDriver_Device.NT.HW]
AddReg=DMA_Remapping_OptIn_AddReg

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

Valores válidos para DMA Management\RemappingSupported:

Valor Significado
0 Desativar. Indica que o dispositivo e o driver são incompatíveis com o remapeamento de DMA.
1 Aceitar. Indica que o dispositivo e o driver são totalmente compatíveis com o remapeamento de DMA.
Nenhuma chave do Registro Deixe o sistema determinar a política.

Opcionalmente, você pode adicionar RemappingFlags para controlar ainda mais o comportamento:

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

Valores válidos para DMA Management\RemappingFlags:

Valor Significado
0 Se RemappingSupported for igual a 1, aceite incondicionalmente.
1 Se RemappingSupported for 1, aceite, mas apenas quando uma ou mais das seguintes condições forem atendidas: A. Se o dispositivo for um dispositivo externo (por exemplo, Thunderbolt); B. Se a verificação de DMA estiver habilitada no Verificador de Driver.
Nenhuma chave do Registro O mesmo valor de 0.

Essas chaves do Registro aparecem na árvore de enumeração: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device instance path>\Device Parameters\DMA Management

Mecanismo de aceitação por driver

Use apenas esse método por driver para versões do Windows até o Windows 11 23H2. É recomendável usar o método por dispositivo.

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

Valores válidos para DmaRemappingCompatible:

Valor Significado
0 Desativar. Indica que o driver é incompatível com o remapeamento de DMA.
1 Aceitar. Indica que seu driver é totalmente compatível com o remapeamento de DMA.
2 Aceitação, mas somente quando uma ou mais das seguintes condições são atendidas: A. O dispositivo é um dispositivo externo (por exemplo, Thunderbolt); B. A verificação de DMA está habilitada no Verificador de Driver
3 Aceitação
Nenhuma chave do Registro Deixe o sistema determinar 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 inclusão de dispositivos externos é promovido a 1.

A chave do registro aparece na árvore de instalação do serviço: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters.

Aviso

Não há suporte para remapeamento de DMA para drivers de dispositivo gráfico.

Validar se o remapeamento de DMA está habilitado para uma instância específica do driver de dispositivo

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

Para verificar se um driver específico aceitou o 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 a funcionalidade de remapeamento de DMA do dispositivo. Veja possíveis valores retornados nessa página e observe que esses valores retornados não são os mesmos que os valores de DmaRemappingCompatible listados na seção anterior.

Guia Detalhes do Gerenciador de Dispositivos.

Nota

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