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.

Wert Bedeutung
0
Wenn die DEP-Systemrichtlinie OptIn oder OptOut ist und DEP für den Prozess aktiviert ist, deaktiviert das Festlegen von dwFlags auf 0 DEP für den Prozess.
PROCESS_DEP_ENABLE
0x00000001
Aktiviert DEP dauerhaft für den aktuellen Prozess. Nachdem DEP für den Prozess durch Festlegen von PROCESS_DEP_ENABLE aktiviert wurde, kann er nicht für die Lebensdauer des Prozesses deaktiviert werden.
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
0x00000002
Deaktiviert die DEP-ATL-Thunk-Emulation für den aktuellen Prozess, wodurch verhindert wird, dass das System NX-Fehler abfangen kann, die von der Thunkschicht der Active Template Library (ATL) stammen. Weitere Informationen finden Sie im Abschnitt mit Hinweisen. Dieses Flag kann nur mit PROCESS_DEP_ENABLE angegeben werden.

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

Siehe auch

Datenausführungsverhinderung

GetProcessDEPPolicy

GetSystemDEPPolicy