diff --git a/patches/ntdll-ProcessImageFileNameWin32/0001-ntdll-Implement-ProcessImageFileNameWin32-in-NtQuery.patch b/patches/ntdll-ProcessImageFileNameWin32/0001-ntdll-Implement-ProcessImageFileNameWin32-in-NtQuery.patch new file mode 100644 index 00000000..65dbe1fe --- /dev/null +++ b/patches/ntdll-ProcessImageFileNameWin32/0001-ntdll-Implement-ProcessImageFileNameWin32-in-NtQuery.patch @@ -0,0 +1,53 @@ +From 02c1bbeb9c610518d282c65aaa6f9563c3d80b73 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 7 Mar 2017 01:57:42 +0100 +Subject: ntdll: Implement ProcessImageFileNameWin32 in + NtQueryInformationProcess. + +--- + dlls/ntdll/process.c | 1 + + include/winternl.h | 16 ++++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c +index a14b6707167..39cd8be6019 100644 +--- a/dlls/ntdll/process.c ++++ b/dlls/ntdll/process.c +@@ -498,6 +498,7 @@ NTSTATUS WINAPI NtQueryInformationProcess( + case ProcessImageFileName: + /* FIXME: this will return a DOS path. Windows returns an NT path. Changing this would require also changing kernel32.QueryFullProcessImageName. + * The latter may be harder because of the lack of RtlNtPathNameToDosPathName. */ ++ case ProcessImageFileNameWin32: + SERVER_START_REQ(get_dll_info) + { + UNICODE_STRING *image_file_name_str = ProcessInformation; +diff --git a/include/winternl.h b/include/winternl.h +index 8acb7fd3e11..4a137f42b49 100644 +--- a/include/winternl.h ++++ b/include/winternl.h +@@ -829,6 +829,22 @@ typedef enum _PROCESSINFOCLASS { + ProcessDebugFlags = 31, + ProcessHandleTracing = 32, + ProcessExecuteFlags = 34, ++ ProcessTlsInformation = 35, ++ ProcessCookie = 36, ++ ProcessImageInformation = 37, ++ ProcessCycleTime = 38, ++ ProcessPagePriority = 39, ++ ProcessInstrumentationCallback = 40, ++ ProcessThreadStackAllocation = 41, ++ ProcessWorkingSetWatchEx = 42, ++ ProcessImageFileNameWin32 = 43, ++ ProcessImageFileMapping = 44, ++ ProcessAffinityUpdateMode = 45, ++ ProcessMemoryAllocationMode = 46, ++ ProcessGroupInformation = 47, ++ ProcessTokenVirtualizationEnabled = 48, ++ ProcessConsoleHostProcess = 49, ++ ProcessWindowInformation = 50, + MaxProcessInfoClass + } PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS; + +-- +2.11.0 + diff --git a/patches/ntdll-ProcessImageFileNameWin32/definition b/patches/ntdll-ProcessImageFileNameWin32/definition new file mode 100644 index 00000000..7c025c1c --- /dev/null +++ b/patches/ntdll-ProcessImageFileNameWin32/definition @@ -0,0 +1 @@ +Fixes: Implement ProcessImageFileNameWin32 info class diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index ec0b0aa6..b62d665e 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -244,6 +244,7 @@ patch_enable_all () enable_ntdll_NtSetInformationToken="$1" enable_ntdll_NtSetLdtEntries="$1" enable_ntdll_Pipe_SpecialCharacters="$1" + enable_ntdll_ProcessImageFileNameWin32="$1" enable_ntdll_ProcessPriorityClass="$1" enable_ntdll_ProcessQuotaLimits="$1" enable_ntdll_Purist_Mode="$1" @@ -949,6 +950,9 @@ patch_enable () ntdll-Pipe_SpecialCharacters) enable_ntdll_Pipe_SpecialCharacters="$2" ;; + ntdll-ProcessImageFileNameWin32) + enable_ntdll_ProcessImageFileNameWin32="$2" + ;; ntdll-ProcessPriorityClass) enable_ntdll_ProcessPriorityClass="$2" ;; @@ -5565,6 +5569,18 @@ if test "$enable_ntdll_Pipe_SpecialCharacters" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-ProcessImageFileNameWin32 +# | +# | Modified files: +# | * dlls/ntdll/process.c, include/winternl.h +# | +if test "$enable_ntdll_ProcessImageFileNameWin32" -eq 1; then + patch_apply ntdll-ProcessImageFileNameWin32/0001-ntdll-Implement-ProcessImageFileNameWin32-in-NtQuery.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll: Implement ProcessImageFileNameWin32 in NtQueryInformationProcess.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-ProcessPriorityClass # | # | Modified files: