pool non paginé No-Execute (NX)

Comme bonne pratique, les pilotes pour les versions Windows 8 et ultérieures de Windows doivent allouer la plupart ou la totalité de leur mémoire non pagée à partir du pool non paginé sans exécution (NX). En allouant de la mémoire à partir d’un pool non paginé NX, un pilote en mode noyau améliore la sécurité en empêchant les logiciels malveillants d’exécuter des instructions dans cette mémoire.

À compter de Windows 8, les pilotes en mode noyau peuvent allouer de la mémoire à partir d’un pool de mémoire non pagée NX. Ce pool est géré par un allocateur de mémoire en mode noyau à usage général qui fonctionne de la même manière que l’allocateur de tas Win32 en mode utilisateur. La mémoire de ce pool est NX et non paginé. Les architectures de processeur x86, x64 et Arm permettent aux pages mémoire d’être désignées comme NX pour empêcher l’exécution d’instructions dans ces pages. En règle générale, un pilote en mode noyau utilise la mémoire allouée à partir d’un pool non paginé pour stocker des données et ne nécessite pas la possibilité d’exécuter des instructions dans cette mémoire.

Prise en charge des pilotes hérités

Dans Windows 7 et les versions antérieures de Windows, toute la mémoire allouée à partir du pool non paginé est exécutable. Pour encourager le portage de ces pilotes pour utiliser un pool non paginé NX dans Windows 8 et versions ultérieures de Windows, Microsoft fournit plusieurs mécanismes d’adhésion pour permettre aux développeurs de mettre à jour leurs pilotes avec un minimum d’effort. Pour plus d’informations, consultez Mécanismes du pool NX Opt-In.

À des fins de compatibilité descendante, les fichiers binaires de pilotes qui s’exécutent sur Windows 7 et les versions antérieures de Windows, et qui allouent de la mémoire à partir du pool exécutable non paginé, s’exécutent sur Windows 8 et les versions ultérieures de Windows sans modification. Toutefois, ces pilotes ne tirent pas parti de la sécurité améliorée du pool non paginé NX.