Condividi tramite


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 esterne (ad esempio, M.2, Thunderbolt), a seconda del valore dei criteri impostato dall'amministratore di sistema.

Requisiti del driver per l'abilitazione e l'opzione di rimappatura DMA

I driver eseguono DMA usando le interfacce seguenti:

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.

Scheda Dettagli di Gestione Dispositivi.

Nota

Per Windows 10, versioni 1803 e 1809, il campo della proprietà in Gestione dispositivi usa un GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]