Abilitare il mapping di DMA per i driver di dispositivo
Per garantire la compatibilità con Kernel DMA Protection e DMAGuard Policy, i driver di dispositivo PCIe possono acconsentire esplicitamente alla modifica del mapping di DMA (Direct Memory Access).
Il remapping DMA dei driver di dispositivo protegge dalla corruzione della memoria e dagli attacchi DMA dannosi, e offre un livello di compatibilità superiore per i dispositivi. Inoltre, i dispositivi con driver compatibili con DMA possono avviare ed eseguire DMA indipendentemente dallo stato della schermata di blocco.
Nei sistemi abilitati per la protezione DMA Kernel, i criteri DMAGuard potrebbero bloccare i dispositivi, con driver incompatibili con la rimappatura DMA, connessi alle porte PCIe esposte
Requisiti del driver per l'abilitazione e l'opzione di rimappatura DMA
I driver eseguono DMA usando le interfacce seguenti:
interfacce NDIS di
Per modificare la politica di remapping DMA del driver, aggiungere una direttiva INF. Esistono due metodi possibili: un meccanismo per dispositivo (fortemente consigliato e preferito) e un meccanismo per driver (obsoleto).
Meccanismo di adesione per dispositivo
Per Windows 24H2 e versioni successive, usare questo metodo per dispositivo. Il consenso esplicito per dispositivo esegue l'override del metodo legacy per driver, se presente (ad esempio, la chiave DmaRemappingCompatible viene ignorata se RemappingSupported è impostata).
Aggiungere una direttiva INF, ad esempio la seguente alla sezione dell'enumerazione del dispositivo:
[MyDriver_Device.NT.HW]
AddReg=DMA_Remapping_OptIn_AddReg
[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1
Valori validi per Gestione DMA\RemappingSupported:
Valore | Significato |
---|---|
0 | Rifiutare esplicitamente. Indica che il dispositivo e il driver non sono compatibili con il mapping DMA. |
1 | Acconsentire esplicitamente. Indica che il dispositivo e il driver sono completamente compatibili con il mapping DMA. |
Nessuna chiave del Registro di sistema | Consentire al sistema di determinare i criteri. |
Facoltativamente, è possibile aggiungere RemappingFlags per controllare ulteriormente il comportamento:
[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1
HKR,"DMA Management","RemappingFlags",0x00010001,0x00000001
Valori validi per gestione DMA\RemappingFlags:
Valore | Significato |
---|---|
0 | Se RemappingSupported è 1, scegliere incondizionatamente. |
1 | Se RemappingSupported è 1, optare per, ma solo quando vengono soddisfatte una o più delle condizioni seguenti: A. Il dispositivo è un dispositivo esterno (ad esempio, Thunderbolt); B. La verifica DMA è abilitata in Driver Verifier |
Nessuna chiave del Registro di sistema | Uguale a 0 valore. |
Queste chiavi del Registro di sistema vengono visualizzate sotto l'albero di enumerazione: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device instance path>\Device Parameters\DMA Management
Meccanismo di consenso esplicito per conducente
Usa questo metodo per driver solo per le versioni di Windows fino a Windows 11 23H2. È consigliabile usare il metodo per dispositivo.
Aggiungere una direttiva INF, ad esempio la seguente alla sezione di installazione del servizio:
[MyServiceInstall_AddReg]
HKR,Parameters,DmaRemappingCompatible,0x00010001,1 ; where 1 = opt-in
Valori validi per DmaRemappingCompatible:
Valore | Significato |
---|---|
0 | Rifiutare esplicitamente. Indica che il driver non è compatibile con il mapping di DMA. |
1 | Iscriversi. Indica che il driver è completamente compatibile con il mapping DMA. |
2 | Consenso esplicito, ma solo quando vengono soddisfatte una o più delle seguenti condizioni: A. Il dispositivo è un dispositivo esterno (ad esempio, Thunderbolt); B. La verifica DMA è abilitata in Driver Verifier. |
3 | Acconsentire esplicitamente |
Nessuna chiave del Registro di sistema | Consentire al sistema di determinare i criteri. |
Quando si testa il driver, abilitare Driver Verifier. Ai fini dei test in Driver Verifier, il valore della direttiva INF per acconsentire esplicitamente ai dispositivi esterni viene alzato di livello a 1.
La chiave del Registro di sistema viene visualizzata sotto l'albero di installazione del servizio: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters
.
Avvertimento
Il mapping di DMA non è supportato per i driver di dispositivi grafici.
Convalidare che il remapping DMA sia abilitato per una specifica istanza del driver di dispositivo
Usa la build più recente di Windows con VT-d/AMD-Vi abilitata per testare la funzionalità del driver nei sistemi Intel x64 e AMD64.
Per verificare se un driver specifico ha scelto di aderire al rimappaggio DMA, cercare nella Gestione dispositivi, nella scheda Dettagli del dispositivo, i valori corrispondenti alla proprietà di rimappatura DMA. Un driver può eseguire una query sulla proprietà DEVPKEY_Device_DmaRemappingPolicy per determinare la funzionalità di modifica del mapping DMA del dispositivo. Vedere i valori restituiti potenziali in tale pagina e notare che questi valori restituiti non corrispondono ai valori per DmaRemappingCompatible elencati nella sezione precedente.
Nota
Per Windows 10, versioni 1803 e 1809, il campo della proprietà in Gestione dispositivi usa un GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]