Habilitar reasignación DMA para controladores de dispositivo
Para garantizar la compatibilidad con Protección Kernel DMA y Directiva DMAGuard, los controladores de dispositivos PCIe pueden optar por la reasignación de acceso directo a memoria (DMA).
La reasignación de DMA para controladores de dispositivos protege contra los daños en la memoria y los ataques DMA malintencionados, y proporciona un mayor nivel de compatibilidad para los dispositivos. Además, los dispositivos con controladores compatibles con la reasignación de DMA pueden iniciar y realizar DMA independientemente del estado de la pantalla de bloqueo.
En los sistemas habilitados para Protección Kernel DMA, la directiva DMAGuard puede bloquear dispositivos con controladores incompatibles con la reasignación DMA conectados a puertos PCIe expuestos/externamente (por ejemplo, M.2, Thunderbolt), según el valor de directiva establecido por el administrador del sistema.
Requisitos de los controladores para habilitar y optar por la reasignación DMA
Los controladores realizan DMA mediante las interfaces siguientes:
Para ajustar la política de reasignación DMA de su controlador, añada una directiva INF. Hay dos métodos posibles: un mecanismo por dispositivo (recomendado y preferido) y un mecanismo por controlador (heredado).
Mecanismo de suscripción por dispositivo
Para Windows 24H2 y versiones posteriores, use este método por dispositivo. La opción por dispositivo anula el método heredado por controlador, si está presente (por ejemplo, la clave DmaRemappingCompatible se ignora si se establece RemappingSupported).
Agregue una directiva INF como la siguiente a la sección enumeración 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 | No participar. Indica que el dispositivo y el controlador son incompatibles con la reasignación DMA. |
1 | Participar. Indica que el dispositivo y el controlador son totalmente compatibles con la reasignación de DMA. |
Sin clave del Registro | Deje que el sistema determine la directiva. |
Opcionalmente, puede agregar RemappingFlags para controlar aún más el comportamiento:
[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 | Si RemappingSupported es 1, participar incondicionalmente. |
1 | Si RemappingSupported es 1, participar, pero solo cuando se cumplen una o más de las siguientes condiciones: A. El dispositivo es un dispositivo externo (por ejemplo, Thunderbolt); B. La verificación DMA está activada en Driver Verifier. |
Sin clave del Registro | El mismo valor que 0. |
Estas claves del Registro aparecen en el árbol de enumeración: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device instance path>\Device Parameters\DMA Management
Mecanismo de participación por controlador
Use solo este método por controlador para las versiones de Windows hasta Windows 11 23H2. Se recomienda usar el método por dispositivo.
Agregue una directiva INF como la siguiente a la sección de instalación del servicio:
[MyServiceInstall_AddReg]
HKR,Parameters,DmaRemappingCompatible,0x00010001,1 ; where 1 = opt-in
Valores válidos para DmaRemappingCompatible:
Valor | Significado |
---|---|
0 | No participar. Indica que el controlador es incompatible con la reasignación DMA. |
1 | Participar. Indica que el controlador es totalmente compatible con la reasignación de DMA. |
2 | Participar pero solo cuando se cumplen una o más de las siguientes condiciones: A. El dispositivo es un dispositivo externo (por ejemplo, Thunderbolt); B. La verificación DMA está activada en Driver Verifier. |
3 | Participar |
Sin clave del Registro | Deje que el sistema determine la directiva. |
Al probar el controlador, habilite Comprobador de controladores. Con fines de prueba en el Comprobador de controladores, el valor de la directiva INF para optar por incluir dispositivos externos se establece en 1.
La clave del Registro aparece en el árbol de instalación del servicio: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters
.
Advertencia
La reasignación DMA no es compatible con los controladores de dispositivos gráficos.
Validación de que la reasignación de DMA está habilitada para una instancia de controlador de dispositivo específica
Use la compilación más reciente de Windows con VT-d/AMD-Vi habilitado para probar la funcionalidad del controlador en sistemas Intel x64 y AMD64.
Para comprobar si un controlador específico optó por participar en la reasignación de DMA, busque en el Administrador de dispositivos, en la pestaña Detalles del dispositivo, los valores de la propiedad correspondiente a la política de reasignación de DMA. Un controlador puede consultar la propiedad DEVPKEY_Device_DmaRemappingPolicy para determinar la funcionalidad de reasignación de DMA del dispositivo. Vea los valores devueltos potenciales en esa página y tenga en cuenta que estos valores devueltos no son los mismos que los valores de DmaRemappingCompatible enumerados en la sección anterior.
Nota
Para Windows 10, versiones 1803 y 1809, el campo de propiedad del Administrador de dispositivos usa un GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]