SetProcessDEPPolicy-Funktion (winbase.h)
Ändert die Einstellungen zur Verhinderung der Datenausführung (Data Execution Prevention, DEP) und DEP-ATL-Thunk-Emulation für einen 32-Bit-Prozess.
Syntax
BOOL SetProcessDEPPolicy(
[in] DWORD dwFlags
);
Parameter
[in] dwFlags
Ein DWORD , das mindestens einer der folgenden Werte sein kann.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt sie TRUE zurück.
Wenn die Funktion fehlschlägt, gibt sie FALSE zurück. Rufen Sie GetLastError auf, um für diese Funktion definierte Fehlerwerte abzurufen.
Hinweise
Die SetProcessDEPPolicy-Funktion überschreibt die DEP-Systemrichtlinie für den aktuellen Prozess, es sei denn, die DEP-Richtlinie wurde bei der Prozesserstellung angegeben. Die DeP-Richtlinieneinstellung des Systems muss OptIn oder OptOut sein. Wenn die System-DEP-Richtlinie AlwaysOff oder AlwaysOn ist, gibt SetProcessDEPPolicy einen Fehler zurück. Nachdem DEP für einen Prozess aktiviert wurde, werden nachfolgende Aufrufe von SetProcessDEPPolicy ignoriert.
Die bei der Prozesserstellung mit dem attribut PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY angegebene DEP-Richtlinie kann für die Lebensdauer des Prozesses nicht geändert werden. In diesem Fall schlagen Aufrufe von SetProcessDEPPolicy mit ERROR_ACCESS_DENIED fehl.
SetProcessDEPPolicy wird nur für 32-Bit-Prozesse unterstützt. Wenn diese Funktion in einem 64-Bit-Prozess aufgerufen wird, schlägt sie mit ERROR_NOT_SUPPORTED fehl.
Anwendungen, die in ATL 7.1 und früher geschrieben wurden, können versuchen, Code auf seiten auszuführen, die als nicht ausführbar markiert sind, wodurch ein NX-Fehler ausgelöst und die Anwendung beendet wird. Die DEP-ATL-Thunk-Emulation ermöglicht es einer Anwendung, die andernfalls einen NX-Fehler auslösen würde, mit aktiviertem DEP auszuführen. Informationen zu ATL-Versionen finden Sie unter ATL- und MFC-Versionsnummern.
Wenn die DEP-ATL-Thunk-Emulation aktiviert ist, fängt das System NX-Fehler ab, emuliert die Anweisungen und verarbeitet die Ausnahmen, damit die Anwendung weiterhin ausgeführt werden kann. Wenn die DEP-ATL-Thunk-Emulation deaktiviert wird, indem PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION für den Prozess festgelegt wird, werden NX-Fehler nicht abgefangen, was beim Testen von Anwendungen auf Kompatibilität mit DEP nützlich ist.
In der folgenden Tabelle sind die Interaktionen zwischen der DEP-Richtlinie des Systems, der DEP-ATL-Thunk-Emulation und SetProcessDEPPolicy zusammengefasst. Um die DeP-Richtlinieneinstellung des Systems abzurufen, verwenden Sie die GetSystemDEPPolicy-Funktion .
System-DEP-Richtlinie | DEP-Verhalten | DEP_ATL Verhalten der Thunk-Emulation | SetProcessDEPPolicy-Verhalten |
---|---|---|---|
AlwaysOff 0 |
Deaktiviert für das Betriebssystem und alle Prozesse. | Nicht zutreffend. | Gibt einen Fehler zurück. |
AlwaysOn 1 |
Aktiviert für das Betriebssystem und alle Prozesse. | Deaktiviert. | Gibt einen Fehler zurück. |
OptIn 2 Standardkonfiguration für Windows-Clientversionen. |
Für das Betriebssystem aktiviert und für nicht systemrelevante Prozesse deaktiviert. Administratoren können DEP für ausgewählte ausführbare Dateien explizit aktivieren. | Nicht zutreffend. |
DEP kann für den aktuellen Prozess aktiviert werden.
Wenn DEP für den aktuellen Prozess aktiviert ist, kann die DEP-ATL-Thunk-Emulation für diesen Prozess deaktiviert werden. |
Optout 3 Standardkonfiguration für Windows Server-Versionen. |
Aktiviert für das Betriebssystem und alle Prozesse. Administratoren können DEP für ausgewählte ausführbare Dateien explizit deaktivieren. | Aktiviert. |
DEP kann für den aktuellen Prozess deaktiviert werden.
Wenn DEP für den aktuellen Prozess deaktiviert ist, wird die DEP-ATL-Thunk-Emulation für diesen Prozess automatisch deaktiviert. |
Um eine Anwendung zu kompilieren, die diese Funktion aufruft, definieren Sie _WIN32_WINNT als 0x0600 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista mit SP1, Windows XP mit SP3 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |