최고의 관행으로, Windows 8 및 이후 버전의 Windows용 드라이버는 실행 방지(NX) 비페이징 풀에서 비페이징 메모리의 대부분 또는 전부를 할당하는 것이 바람직합니다. NX 비페이지 풀에서 메모리를 할당하면 커널 모드 드라이버가 악성 소프트웨어가 이 메모리의 지침을 실행하지 못하도록 방지하여 보안을 향상시킵니다.
Windows 8부터 커널 모드 드라이버는 NX 비페이지 메모리 풀에서 메모리를 할당할 수 있습니다. 이 풀은 사용자 모드 Win32 힙 할당자와 유사하게 작동하는 범용 커널 모드 메모리 할당자에 의해 관리됩니다. 이 풀의 메모리는 NX이며 비페이징입니다. x86, x64 및 Arm 프로세서 아키텍처를 사용하면 메모리 페이지를 NX로 지정하여 이러한 페이지에서 명령의 실행을 방지할 수 있습니다. 일반적으로 커널 모드 드라이버는 비페이지 풀에서 할당된 메모리를 사용하여 데이터를 저장하며 이 메모리에서 지침을 실행할 수 있는 기능이 필요하지 않습니다.
레거시 드라이버 지원
Windows 7 및 이전 버전의 Windows에서는 페이지가 지정되지 않은 풀에서 할당된 모든 메모리가 실행 가능합니다. Windows 8 이상 버전의 Windows에서 NX 비페이지 풀을 사용하도록 이러한 드라이버의 포팅을 장려하기 위해 Microsoft는 개발자가 최소한의 노력으로 드라이버를 업데이트할 수 있도록 몇 가지 옵트인 메커니즘을 제공합니다. 자세한 내용은 NX 풀 Opt-In 메커니즘참조하세요.
이전 버전과의 호환성을 위해 Windows 7 및 이전 버전의 Windows에서 실행되고 실행 파일이 아닌 풀에서 메모리를 할당하는 드라이버 이진 파일은 Windows 8 이상 버전에서 수정 없이 실행됩니다. 그러나 이러한 드라이버는 NX 비페이지 풀의 향상된 보안을 활용하지 않습니다.