Signed-off-by: Zebediah Figura z.figura12@gmail.com --- 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) ) ); }
/**********************************************************************