Habilitar o remapeamento DMA para drivers de dispositivo
Para garantir a compatibilidade com a Proteção DMA do Kernel () e a Política DMAGuard (), os drivers de dispositivos PCIe podem optar pelo remapeamento de Acesso Direto à Memória (DMA).
O remapeamento de DMA para drivers de dispositivo protege contra corrupção de memória e ataques mal-intencionados de DMA e fornece um nível mais alto de compatibilidade para dispositivos. Além disso, dispositivos com drivers compatíveis com remapeamento DMA podem iniciar e executar DMA independentemente do status da tela de bloqueio.
Em sistemas ativados para Proteção DMA do kernel, a Diretiva DMAGuard poderá bloquear dispositivos equipados com drivers incompatíveis com o remapeamento DMA, conectados a portas PCIe expostas externamente / (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 do DMA
Os drivers executam DMA usando as seguintes interfaces:
Para ajustar a política de remapeamento DMA para seu driver, adicione uma diretiva INF. Existem dois métodos possíveis: um mecanismo por dispositivo (recomendado e preferido) e um mecanismo por condutor (legado).
Mecanismo de adesão voluntária por dispositivo
Para Windows 24H2 e versões posteriores, use este método por dispositivo. O opt-in por dispositivo substitui o método por driver, se presente (por exemplo, a chave DmaRemappingCompatible será ignorada se RemappingSupported estiver definida).
Adicione uma diretiva INF, como a seguinte, à seção de enumeração de dispositivos:
[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 DMA. |
1 | Aderir. Indica que o dispositivo e o driver são totalmente compatíveis com o remapeamento DMA. |
Sem chave de registo | 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, escolha participar incondicionalmente. |
1 | Se RemappingSupported for 1, opte por participar, mas somente quando uma ou mais das seguintes condições forem atendidas: A. O dispositivo é um dispositivo externo (por exemplo, Thunderbolt); B. A verificação DMA está ativada no Verificador de Driver |
Sem chave de registo | O mesmo que o valor 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 adesão opcional por condutor
Use este método por controlador apenas para as versões do Windows até o Windows 11 23H2. Recomenda-se 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 seu driver é incompatível com o remapeamento do DMA. |
1 | Consentir. Indica que o controlador é totalmente compatível com o remapeamento DMA. |
2 | Opt-in, mas apenas quando uma ou mais das seguintes condições forem satisfeitas: A. O dispositivo é um dispositivo externo (por exemplo, Thunderbolt); B. A verificação DMA está ativada no Verificador de Driver |
3 | Adesão voluntária |
Sem chave de registo | Deixe o sistema determinar a política. |
Ao testar o driver, ative o Verificador de Controladores. Para fins de teste no Driver Verifier, o valor da diretiva INF para optar por dispositivos externos é promovido para 1.
A chave do registro aparece na árvore de instalação do serviço: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters
.
Advertência
O remapeamento de DMA não é suportado para drivers de dispositivos gráficos.
Validando que o remapeamento DMA está ativado para uma instância específica do controlador de dispositivo
Use a compilação mais recente do Windows com VT-d/AMD-Vi habilitado para testar a funcionalidade do driver nos sistemas Intel x64 e AMD64.
Para verificar se um driver específico optou pelo remapeamento de DMA, procure no Gestor de Dispositivos, no separador Detalhes do dispositivo , os valores correspondentes à propriedade de política de remapeamento de DMA. Um controlador pode consultar a propriedade DEVPKEY_Device_DmaRemappingPolicy para determinar a capacidade 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 para DmaRemappingCompatible listados na seção anterior.
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]