Partilhar via


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.

separador Detalhes do Gestor 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]