Pool nãopagado de No-Execute (NX)
Como prática recomendada, os drivers para Windows 8 e versões posteriores do Windows devem alocar a maior parte ou toda a memória nãopagada do pool nãopagado (NX) não executado. Ao alocar memória do pool nãopagado do NX, um driver no modo kernel melhora a segurança impedindo que software mal-intencionado execute instruções nessa memória.
Começando com Windows 8, os drivers no modo kernel podem alocar memória de um pool de memória nãopagada NX. Esse pool é gerenciado por um alocador de memória de modo kernel de uso geral que opera de forma semelhante ao alocador de heap Win32 no modo de usuário. A memória nesse pool é NX e nãopagada. As arquiteturas de processador x86, x64 e Arm permitem que as páginas de memória sejam designadas como NX para impedir a execução de instruções nessas páginas. Normalmente, um driver de modo kernel usa memória alocada de pool nãopagado para armazenar dados e não requer a capacidade de executar instruções nesta memória.
Suporte para drivers herdados
No Windows 7 e versões anteriores do Windows, toda a memória alocada do pool nãopagado é executável. Para incentivar a portabilidade desses drivers a usar o pool nãopagado do NX em Windows 8 e versões posteriores do Windows, a Microsoft fornece vários mecanismos de aceitação para permitir que os desenvolvedores atualizem seus drivers com o mínimo de esforço. Para obter mais informações, consulte Mecanismos de Opt-In do pool de NX.
Para compatibilidade com versões anteriores, os binários de driver executados no Windows 7 e versões anteriores do Windows e que alocam memória do pool executável nãopagado serão executados em Windows 8 e versões posteriores do Windows sem modificação. No entanto, esses drivers não aproveitam a segurança aprimorada do pool nãopagado do NX.