Condividi tramite


No-Execute (NX) Pool non paginato

Come procedura consigliata, i driver per Windows 8 e per le versioni successive di Windows devono allocare la maggior parte o tutta la memoria non di paging dal pool non di paging no-execute (NX). Allocando la memoria dal pool non paginato NX, un driver in modalità kernel migliora la sicurezza impedendo al software dannoso di eseguire istruzioni in questa memoria.

A partire da Windows 8, i driver in modalità kernel possono allocare memoria da un pool di memoria NX non paginata. Questo pool è gestito da un allocatore di memoria in modalità kernel per utilizzo generico che funziona in modo analogo all'allocatore heap Win32 in modalità utente. La memoria in questo pool è NX e non di paginazione. Le architetture del processore x86, x64 e Arm consentono di designare le pagine di memoria come NX per impedire l'esecuzione di istruzioni in queste pagine. In genere, un driver in modalità kernel usa la memoria allocata dal pool non impaginato per archiviare i dati e non richiede la possibilità di eseguire istruzioni in questa memoria.

Supporto per i driver legacy

In Windows 7 e versioni precedenti di Windows, tutta la memoria allocata dal pool non paginato è eseguibile. Per incoraggiare il porting di questi driver all'uso di pool non paginato NX in Windows 8 e versioni successive di Windows, Microsoft offre diversi meccanismi opt-in per permettere agli sviluppatori di aggiornare i driver con un minimo sforzo. Per altre informazioni, vedere NX Pool Opt-In Mechanisms.

Per la compatibilità con le versioni precedenti, i file binari del driver che vengono eseguiti su Windows 7 e versioni precedenti di Windows, e che allocano memoria dall'area di memoria eseguibile non paginata, possono essere eseguiti su Windows 8 e versioni successive di Windows senza modifiche. Tuttavia, questi driver non sfruttano la sicurezza migliorata del pool non di paging NX.