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.
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]