Zebediah Figura : kernel32: Implement SetProcessDEPPolicy().

Alexandre Julliard julliard at winehq.org
Fri Jan 29 15:10:21 CST 2021


Module: wine
Branch: master
Commit: b62921245238412709d4e9f8a3548d37864d0d5d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b62921245238412709d4e9f8a3548d37864d0d5d

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Thu Jan 28 22:08:22 2021 -0600

kernel32: Implement SetProcessDEPPolicy().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/process.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 227d49ea37e..085fff1454e 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -562,11 +562,19 @@ DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy(void)
 /**********************************************************************
  *           SetProcessDEPPolicy     (KERNEL32.@)
  */
-BOOL WINAPI SetProcessDEPPolicy(DWORD newDEP)
+BOOL WINAPI SetProcessDEPPolicy( DWORD flags )
 {
-    FIXME("(%d): stub\n", newDEP);
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return FALSE;
+    ULONG dep_flags = 0;
+
+    TRACE("%#x\n", flags);
+
+    if (flags & PROCESS_DEP_ENABLE)
+        dep_flags |= MEM_EXECUTE_OPTION_DISABLE | MEM_EXECUTE_OPTION_PERMANENT;
+    if (flags & PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION)
+        dep_flags |= MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION;
+
+    return set_ntstatus( NtSetInformationProcess( GetCurrentProcess(), ProcessExecuteFlags,
+                                                  &dep_flags, sizeof(dep_flags) ) );
 }
 
 /**********************************************************************




More information about the wine-cvs mailing list