Partager via


Pool non paginé sans exécution (NX)

Par meilleure pratique, les pilotes pour Windows 8 et les versions ultérieures de Windows devraient allouer la totalité ou la majorité de leur mémoire non paginée à partir du pool non-exécutable (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.

À partir de Windows 8, les pilotes en mode noyau peuvent allouer de la mémoire à partir d’un pool de mémoire non paginée de type NX. Ce pool est géré par un allocateur de mémoire en mode noyau universel qui fonctionne de la même façon que l’allocateur de tas Win32 en mode utilisateur. La mémoire de ce pool est NX et non paginée. 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 anciens pilotes

Dans Windows 7 et les versions antérieures de Windows, toutes les mémoires allouées à partir du pool non paginé sont exécutables. Pour encourager la migration de ces pilotes vers l'utilisation du pool NX non paginé sous Windows 8 et versions suivantes, Microsoft propose plusieurs mécanismes d'adhésion volontaires afin de permettre aux développeurs de mettre à jour leurs pilotes avec un effort minimal. Pour plus d’informations, consultez pool NX Opt-In Mécanismes.

Pour la 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 non paginé exécutable, s’exécutent sur Windows 8 et versions ultérieures de Windows sans modification. Toutefois, ces pilotes ne tirent pas parti de la sécurité améliorée du pool NX non paginé.