Freigeben über


No-Execute (NX)-Pool ohne Auslagerung

Als bewährte Methode sollten Treiber für Windows 8 und höhere Versionen von Windows den großteils oder den gesamten nicht auslagerten Arbeitsspeicher aus dem nicht ausseitigen NX-Pool (No-Execute) zuweisen. Durch die Zuweisung von Arbeitsspeicher aus einem NX-Pool ohne Auslagerung verbessert ein Kernelmodustreiber die Sicherheit, indem er verhindert, dass schadhafte Software Anweisungen in diesem Speicher ausführt.

Ab Windows 8 können Kernelmodustreiber Arbeitsspeicher aus einem Pool von NX ohne Auslagerspeicher zuweisen. Dieser Pool wird von einem universellen Kernelmodus-Speicherzuteilung verwaltet, der ähnlich wie der Win32-Heap-Allocator im Benutzermodus funktioniert. Der Arbeitsspeicher in diesem Pool ist NX und nicht auspaged. Mit den Prozessorarchitekturen x86, x64 und Arm können Speicherseiten als NX festgelegt werden, um die Ausführung von Anweisungen auf diesen Seiten zu verhindern. In der Regel verwendet ein Kernelmodustreiber Speicher, der aus einem nicht ausgestellten Pool zugewiesen wurde, um Daten zu speichern, und erfordert keine Möglichkeit, Anweisungen in diesem Speicher auszuführen.

Unterstützung für Legacytreiber

In Windows 7 und früheren Versionen von Windows ist der gesamte Arbeitsspeicher, der aus dem nicht ausgestellten Pool zugewiesen wird, ausführbar. Um die Portierung dieser Treiber für die Verwendung des NICHT-ausseitigen 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 Arbeitsspeicher aus dem ausführbaren Nicht-Auslagerpool zuordnen, unter Windows 8 und höheren Versionen von Windows ohne Änderungen ausgeführt. Diese Treiber profitieren jedoch nicht von der verbesserten Sicherheit des nicht auslagerten NX-Pools.