Dmitry Timoshkov : ntdll: Add support for NtSetInformationProcess( ProcessExecuteFlags).

Alexandre Julliard julliard at winehq.org
Thu Sep 4 08:27:04 CDT 2008


Module: wine
Branch: master
Commit: 97f2cbc1ea01ba1bc6024d73739c7f459a1bf1f5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=97f2cbc1ea01ba1bc6024d73739c7f459a1bf1f5

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Thu Sep  4 17:37:23 2008 +0900

ntdll: Add support for NtSetInformationProcess(ProcessExecuteFlags).

---

 dlls/ntdll/process.c |   22 ++++++++++++++++++++++
 include/winternl.h   |    5 +++++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 2a09390..3179d9c 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -389,6 +389,28 @@ NTSTATUS WINAPI NtSetInformationProcess(
             SERVER_END_REQ;
         }
         break;
+
+    case ProcessExecuteFlags:
+        if (ProcessInformationLength != sizeof(ULONG))
+            return STATUS_INVALID_PARAMETER;
+        else
+        {
+            BOOL enable;
+            switch (*(ULONG *)ProcessInformation & (MEM_EXECUTE_OPTION_ENABLE|MEM_EXECUTE_OPTION_DISABLE))
+            {
+            case MEM_EXECUTE_OPTION_ENABLE:
+                enable = FALSE;
+                break;
+            case MEM_EXECUTE_OPTION_DISABLE:
+                enable = TRUE;
+                break;
+            default:
+                return STATUS_INVALID_PARAMETER;
+            }
+            VIRTUAL_SetForceExec( enable );
+        }
+        break;
+
     default:
         FIXME("(%p,0x%08x,%p,0x%08x) stub\n",
               ProcessHandle,ProcessInformationClass,ProcessInformation,
diff --git a/include/winternl.h b/include/winternl.h
index 2dc1fc2..71169fa 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -665,9 +665,14 @@ typedef enum _PROCESSINFOCLASS {
     ProcessDebugObjectHandle = 30,
     ProcessDebugFlags = 31,
     ProcessHandleTracing = 32,
+    ProcessExecuteFlags = 34,
     MaxProcessInfoClass
 } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS;
 
+#define MEM_EXECUTE_OPTION_DISABLE   0x01
+#define MEM_EXECUTE_OPTION_ENABLE    0x02
+#define MEM_EXECUTE_OPTION_PERMANENT 0x08
+
 typedef enum _SECTION_INHERIT {
     ViewShare = 1,
     ViewUnmap = 2




More information about the wine-cvs mailing list