Freigeben über


No-Execute (NX) Nichtausgelagerter Speicherpool

Als bewährte Methode sollten Treiber für Windows 8 und höhere Versionen von Windows die meisten oder alle nicht ausgelagerten Arbeitsspeicher aus dem nicht-ausführbaren (NX) nicht ausgelagerten Pool zuordnen. Durch die Zuweisung von Speicher aus dem NX-nicht-seitenden Pool verbessert ein Kernelmodustreiber die Sicherheit, indem er verhindert, dass schadhafte Software Anweisungen in diesem Speicher ausführt.

Ab Windows 8 können Kernelmodustreiber Speicher aus einem Pool von NX-Nichtseitenspeicher zuordnen. Dieser Pool wird von einem allgemeinen Speicherallocator im Kernelmodus verwaltet, der dem Win32-Heap-Allocator im Benutzermodus ähnelt. Der Speicher in diesem Pool ist NX und nicht seitenseitiger Speicher. Die x86-, x64- und Arm-Prozessorarchitekturen ermöglichen es Speicherseiten als NX festzulegen, um die Ausführung von Anweisungen auf diesen Seiten zu verhindern. In der Regel verwendet ein Kernelmodustreiber Speicher, der aus einem nicht seitengebundenen Pool zugeordnet ist, um Daten zu speichern, und erfordert nicht die Möglichkeit, Anweisungen in diesem Speicher auszuführen.

Unterstützung für Legacy-Treiber

In Windows 7 und früheren Versionen von Windows ist der gesamte vom nicht seitenfreien Pool zugewiesene Arbeitsspeicher ausführbar. Um die Portierung dieser Treiber zur Verwendung des nichtpageierten NX-Pools in Windows 8 und höheren Versionen von Windows zu fördern, bietet Microsoft mehrere Opt-In-Mechanismen, mit denen Entwickler ihre Treiber mit minimalem Aufwand aktualisieren können. Weitere Informationen finden Sie unter NX Pool Opt-In Mechanismen.

Aus Gründen der Abwärtskompatibilität werden Treiberbinärdateien, die unter Windows 7 und früheren Versionen von Windows ausgeführt werden, und die Arbeitsspeicher aus dem ausführbaren Nichtseitenpool zuweisen, unter Windows 8 und höheren Versionen von Windows ohne Änderung ausgeführt. Diese Treiber nutzen jedoch nicht die verbesserte Sicherheit des nichtpageierten NX-Pools.