From c26be86c42e046eaa781b4b269f1d9b2530a5aad Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Fri, 7 Feb 2020 16:49:59 -0600 Subject: [PATCH] Rebase against f909d18baf1d97831c55a1d47610427ac2084ca3. --- ...ub-for-MemoryWorkingSetExInformation.patch | 92 --------- .../definition | 2 - ...c-for-MemoryBasicInformation-into-a-.patch | 102 ---------- ...NtQueryVirtualMemory-MemorySectionNa.patch | 48 ++--- patches/patchinstall.sh | 188 ++++++++---------- 5 files changed, 98 insertions(+), 334 deletions(-) delete mode 100644 patches/ntdll-MemoryWorkingSetExInformation/0002-ntdll-Stub-for-MemoryWorkingSetExInformation.patch delete mode 100644 patches/ntdll-MemoryWorkingSetExInformation/definition delete mode 100644 patches/ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch diff --git a/patches/ntdll-MemoryWorkingSetExInformation/0002-ntdll-Stub-for-MemoryWorkingSetExInformation.patch b/patches/ntdll-MemoryWorkingSetExInformation/0002-ntdll-Stub-for-MemoryWorkingSetExInformation.patch deleted file mode 100644 index 49ff0e97..00000000 --- a/patches/ntdll-MemoryWorkingSetExInformation/0002-ntdll-Stub-for-MemoryWorkingSetExInformation.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 05273f6d078422ad096153761cc386d9b536ac21 Mon Sep 17 00:00:00 2001 -From: Andrew Wesie -Date: Sat, 18 Aug 2018 15:48:10 -0500 -Subject: [PATCH] ntdll: Stub for MemoryWorkingSetExInformation. - ---- - dlls/ntdll/virtual.c | 22 ++++++++++++++++++++++ - include/winternl.h | 21 ++++++++++++++++++++- - 2 files changed, 42 insertions(+), 1 deletion(-) - -diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index de1981767..a15e6211a 100644 ---- a/dlls/ntdll/virtual.c -+++ b/dlls/ntdll/virtual.c -@@ -3144,6 +3144,25 @@ found: - } - - -+static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr, -+ MEMORY_WORKING_SET_EX_INFORMATION *info, -+ SIZE_T len, SIZE_T *res_len ) -+{ -+ MEMORY_WORKING_SET_EX_INFORMATION *p; -+ -+ for (p = info; (UINT_PTR)(p + 1) <= (UINT_PTR)info + len; p++) -+ { -+ FIXME("(VirtualAddress=%p) Unimplemented.\n", p->VirtualAddress); -+ /* FIXME Mark all addresses as invalid. */ -+ p->VirtualAttributes.Valid = 0; -+ } -+ -+ if (res_len) -+ *res_len = (UINT_PTR)p - (UINT_PTR)info; -+ return STATUS_SUCCESS; -+} -+ -+ - #define UNIMPLEMENTED_INFO_CLASS(c) \ - case c: \ - FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ -@@ -3168,6 +3187,9 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, - case MemorySectionName: - return get_section_name( process, addr, buffer, len, res_len ); - -+ case MemoryWorkingSetExInformation: -+ return get_working_set_ex( process, addr, buffer, len, res_len ); -+ - UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList); - UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation); - -diff --git a/include/winternl.h b/include/winternl.h -index 9b8bef0fe..79285065a 100644 ---- a/include/winternl.h -+++ b/include/winternl.h -@@ -1042,7 +1042,8 @@ typedef enum _MEMORY_INFORMATION_CLASS { - MemoryBasicInformation, - MemoryWorkingSetList, - MemorySectionName, -- MemoryBasicVlmInformation -+ MemoryBasicVlmInformation, -+ MemoryWorkingSetExInformation, - } MEMORY_INFORMATION_CLASS; - - typedef struct _MEMORY_SECTION_NAME -@@ -1050,6 +1051,24 @@ typedef struct _MEMORY_SECTION_NAME - UNICODE_STRING SectionFileName; - } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; - -+typedef union _MEMORY_WORKING_SET_EX_BLOCK { -+ ULONG_PTR Flags; -+ struct { -+ ULONG_PTR Valid : 1; -+ ULONG_PTR ShareCount : 3; -+ ULONG_PTR Win32Protection : 11; -+ ULONG_PTR Shared : 1; -+ ULONG_PTR Node : 6; -+ ULONG_PTR Locked : 1; -+ ULONG_PTR LargePage : 1; -+ } DUMMYSTRUCTNAME; -+} MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK; -+ -+typedef struct _MEMORY_WORKING_SET_EX_INFORMATION { -+ PVOID VirtualAddress; -+ MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes; -+} MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION; -+ - typedef enum _MUTANT_INFORMATION_CLASS - { - MutantBasicInformation --- -2.23.0 - diff --git a/patches/ntdll-MemoryWorkingSetExInformation/definition b/patches/ntdll-MemoryWorkingSetExInformation/definition deleted file mode 100644 index 301dcc3e..00000000 --- a/patches/ntdll-MemoryWorkingSetExInformation/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [45667] League of Legends 8.15+ fails due to missing implementation of NtQueryVirtualMemory(MemoryWorkingSetExInformation) -Depends: ntdll-NtQueryVirtualMemory diff --git a/patches/ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch b/patches/ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch deleted file mode 100644 index afc1d2c1..00000000 --- a/patches/ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch +++ /dev/null @@ -1,102 +0,0 @@ -From c3a85e487e8e1ee017a2d03e9f7eccbfdd99306a Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Sun, 28 May 2017 04:19:06 +0200 -Subject: [PATCH] ntdll: Split logic for MemoryBasicInformation into a separate - function. - ---- - dlls/ntdll/virtual.c | 65 ++++++++++++++++++++++++++++++---------------------- - 1 file changed, 37 insertions(+), 28 deletions(-) - -diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index c86ca88..26fe4a8 100644 ---- a/dlls/ntdll/virtual.c -+++ b/dlls/ntdll/virtual.c -@@ -2786,40 +2786,16 @@ static int get_free_mem_state_callback( void *start, size_t size, void *arg ) - return 1; - } - --#define UNIMPLEMENTED_INFO_CLASS(c) \ -- case c: \ -- FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ -- return STATUS_INVALID_INFO_CLASS -- --/*********************************************************************** -- * NtQueryVirtualMemory (NTDLL.@) -- * ZwQueryVirtualMemory (NTDLL.@) -- */ --NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, -- MEMORY_INFORMATION_CLASS info_class, PVOID buffer, -- SIZE_T len, SIZE_T *res_len ) -+/* get basic information about a memory block */ -+static NTSTATUS get_basic_memory_info( HANDLE process, LPCVOID addr, -+ MEMORY_BASIC_INFORMATION *info, -+ SIZE_T len, SIZE_T *res_len ) - { - struct file_view *view; - char *base, *alloc_base = 0, *alloc_end = working_set_limit; - struct wine_rb_entry *ptr; -- MEMORY_BASIC_INFORMATION *info = buffer; - sigset_t sigset; - -- if (info_class != MemoryBasicInformation) -- { -- switch(info_class) -- { -- UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList); -- UNIMPLEMENTED_INFO_CLASS(MemorySectionName); -- UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation); -- -- default: -- FIXME("(%p,%p,info_class=%d,%p,%ld,%p) Unknown information class\n", -- process, addr, info_class, buffer, len, res_len); -- return STATUS_INVALID_INFO_CLASS; -- } -- } -- - if (len < sizeof(MEMORY_BASIC_INFORMATION)) - return STATUS_INFO_LENGTH_MISMATCH; - -@@ -2934,6 +2910,39 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, - } - - -+#define UNIMPLEMENTED_INFO_CLASS(c) \ -+ case c: \ -+ FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ -+ return STATUS_INVALID_INFO_CLASS -+ -+/*********************************************************************** -+ * NtQueryVirtualMemory (NTDLL.@) -+ * ZwQueryVirtualMemory (NTDLL.@) -+ */ -+NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, -+ MEMORY_INFORMATION_CLASS info_class, -+ PVOID buffer, SIZE_T len, SIZE_T *res_len ) -+{ -+ TRACE("(%p, %p, info_class=%d, %p, %ld, %p)\n", -+ process, addr, info_class, buffer, len, res_len); -+ -+ switch(info_class) -+ { -+ case MemoryBasicInformation: -+ return get_basic_memory_info( process, addr, buffer, len, res_len ); -+ -+ UNIMPLEMENTED_INFO_CLASS(MemoryWorkingSetList); -+ UNIMPLEMENTED_INFO_CLASS(MemorySectionName); -+ UNIMPLEMENTED_INFO_CLASS(MemoryBasicVlmInformation); -+ -+ default: -+ FIXME("(%p,%p,info_class=%d,%p,%ld,%p) Unknown information class\n", -+ process, addr, info_class, buffer, len, res_len); -+ return STATUS_INVALID_INFO_CLASS; -+ } -+} -+ -+ - /*********************************************************************** - * NtLockVirtualMemory (NTDLL.@) - * ZwLockVirtualMemory (NTDLL.@) --- -1.9.1 - diff --git a/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch b/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch index 48b4ae42..503b5c5b 100644 --- a/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch +++ b/patches/ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch @@ -1,32 +1,24 @@ -From 0dd49a3b6d7951374e0bd120535f02377112064c Mon Sep 17 00:00:00 2001 +From e718ef3521d76d455dbfd1088cc83e47121d987c Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Sun, 28 May 2017 05:19:30 +0200 Subject: ntdll: Implement NtQueryVirtualMemory(MemorySectionName). (v3) Contains several improvements by Sebastian Lackner . --- - dlls/ntdll/virtual.c | 92 ++++++++++++++++++++++++++++++++++++++++++- - dlls/psapi/tests/psapi_main.c | 8 +--- - server/mapping.c | 29 ++++++++++++++ - server/protocol.def | 9 +++++ - 4 files changed, 130 insertions(+), 8 deletions(-) + dlls/ntdll/virtual.c | 91 ++++++++++++++++++++++++++++++++++- + dlls/psapi/tests/psapi_main.c | 8 +-- + server/mapping.c | 29 +++++++++++ + server/protocol.def | 9 ++++ + 4 files changed, 129 insertions(+), 8 deletions(-) diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index 4c927597a9f..164186f274b 100644 +index 6ad2d21e0..f49127c3e 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c -@@ -2653,6 +2653,7 @@ static int get_free_mem_state_callback( void *start, size_t size, void *arg ) - return 1; +@@ -3192,6 +3192,93 @@ static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr, + return STATUS_SUCCESS; } -+ - /* get basic information about a memory block */ - static NTSTATUS get_basic_memory_info( HANDLE process, LPCVOID addr, - MEMORY_BASIC_INFORMATION *info, -@@ -2774,6 +2775,93 @@ static NTSTATUS get_basic_memory_info( HANDLE process, LPCVOID addr, - } - - +/* get file name for mapped section */ +static NTSTATUS get_section_name( HANDLE process, LPCVOID addr, + MEMORY_SECTION_NAME *info, @@ -117,9 +109,9 @@ index 4c927597a9f..164186f274b 100644 #define UNIMPLEMENTED_INFO_CLASS(c) \ case c: \ FIXME("(process=%p,addr=%p) Unimplemented information class: " #c "\n", process, addr); \ -@@ -2795,8 +2883,10 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, - case MemoryBasicInformation: - return get_basic_memory_info( process, addr, buffer, len, res_len ); +@@ -3216,8 +3303,10 @@ NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, + case MemoryWorkingSetExInformation: + return get_working_set_ex( process, addr, buffer, len, res_len ); + case MemorySectionName: + return get_section_name( process, addr, buffer, len, res_len ); @@ -130,10 +122,10 @@ index 4c927597a9f..164186f274b 100644 default: diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c -index e7af5bc61cc..ef5ae19aeaf 100644 +index 0df247e9b..1cc0455aa 100644 --- a/dlls/psapi/tests/psapi_main.c +++ b/dlls/psapi/tests/psapi_main.c -@@ -342,14 +342,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr, LPWSTR name, DW +@@ -375,14 +375,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr, LPWSTR name, DW ret_len = 0xdeadbeef; status = pNtQueryVirtualMemory(process, addr, MemorySectionName, buf, buf_len, &ret_len); @@ -148,7 +140,7 @@ index e7af5bc61cc..ef5ae19aeaf 100644 section_name = (MEMORY_SECTION_NAME *)buf; ok(ret_len == section_name->SectionFileName.MaximumLength + sizeof(*section_name), "got %lu, %u\n", -@@ -471,6 +464,7 @@ todo_wine { +@@ -504,6 +497,7 @@ todo_wine { { ok(memcmp(map_nameW, nt_map_name, lstrlenW(map_nameW)) == 0, "map name does not start with a device name: %s\n", map_name); WideCharToMultiByte(CP_ACP, 0, map_nameW, -1, map_name, MAX_PATH, NULL, NULL); @@ -157,10 +149,10 @@ index e7af5bc61cc..ef5ae19aeaf 100644 } diff --git a/server/mapping.c b/server/mapping.c -index a6d34f91aff..8459c316559 100644 +index 6990a1913..ca28e8909 100644 --- a/server/mapping.c +++ b/server/mapping.c -@@ -1011,6 +1011,35 @@ DECL_HANDLER(unmap_view) +@@ -1064,6 +1064,35 @@ DECL_HANDLER(unmap_view) if (view) free_memory_view( view ); } @@ -197,10 +189,10 @@ index a6d34f91aff..8459c316559 100644 DECL_HANDLER(get_mapping_committed_range) { diff --git a/server/protocol.def b/server/protocol.def -index 0bcff7b2b25..f248b3bdec7 100644 +index 6c44b2b43..e7753f8b7 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -1782,6 +1782,15 @@ enum char_info_mode +@@ -1838,6 +1838,15 @@ enum char_info_mode @END @@ -217,5 +209,5 @@ index 0bcff7b2b25..f248b3bdec7 100644 @REQ(get_mapping_committed_range) client_ptr_t base; /* view base address */ -- -2.14.1 +2.25.0 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 9d9ddea3..19fdfdf5 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "9642f35922b79cebacdc774eb54619e389ccd531" + echo "f909d18baf1d97831c55a1d47610427ac2084ca3" } # Show version information @@ -193,7 +193,6 @@ patch_enable_all () enable_ntdll_Junction_Points="$1" enable_ntdll_LDR_MODULE="$1" enable_ntdll_Manifest_Range="$1" - enable_ntdll_MemoryWorkingSetExInformation="$1" enable_ntdll_NtAccessCheck="$1" enable_ntdll_NtContinue="$1" enable_ntdll_NtDevicePath="$1" @@ -698,9 +697,6 @@ patch_enable () ntdll-Manifest_Range) enable_ntdll_Manifest_Range="$2" ;; - ntdll-MemoryWorkingSetExInformation) - enable_ntdll_MemoryWorkingSetExInformation="$2" - ;; ntdll-NtAccessCheck) enable_ntdll_NtAccessCheck="$2" ;; @@ -1762,27 +1758,6 @@ if test "$enable_ntdll_Syscall_Emulation" -eq 1; then enable_winebuild_Fake_Dlls=1 fi -if test "$enable_ntdll_NtQueryEaFile" -eq 1; then - if test "$enable_ntdll_Junction_Points" -gt 1; then - abort "Patchset ntdll-Junction_Points disabled, but ntdll-NtQueryEaFile depends on that." - fi - enable_ntdll_Junction_Points=1 -fi - -if test "$enable_ntdll_NtContinue" -eq 1; then - if test "$enable_winebuild_Fake_Dlls" -gt 1; then - abort "Patchset winebuild-Fake_Dlls disabled, but ntdll-NtContinue depends on that." - fi - enable_winebuild_Fake_Dlls=1 -fi - -if test "$enable_ntdll_MemoryWorkingSetExInformation" -eq 1; then - if test "$enable_ntdll_NtQueryVirtualMemory" -gt 1; then - abort "Patchset ntdll-NtQueryVirtualMemory disabled, but ntdll-MemoryWorkingSetExInformation depends on that." - fi - enable_ntdll_NtQueryVirtualMemory=1 -fi - if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then if test "$enable_ntdll_NtDevicePath" -gt 1; then abort "Patchset ntdll-NtDevicePath disabled, but ntdll-NtQueryVirtualMemory depends on that." @@ -1790,6 +1765,13 @@ if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then enable_ntdll_NtDevicePath=1 fi +if test "$enable_ntdll_NtQueryEaFile" -eq 1; then + if test "$enable_ntdll_Junction_Points" -gt 1; then + abort "Patchset ntdll-Junction_Points disabled, but ntdll-NtQueryEaFile depends on that." + fi + enable_ntdll_Junction_Points=1 +fi + if test "$enable_ntdll_NtDevicePath" -eq 1; then if test "$enable_ntdll_Pipe_SpecialCharacters" -gt 1; then abort "Patchset ntdll-Pipe_SpecialCharacters disabled, but ntdll-NtDevicePath depends on that." @@ -1797,6 +1779,13 @@ if test "$enable_ntdll_NtDevicePath" -eq 1; then enable_ntdll_Pipe_SpecialCharacters=1 fi +if test "$enable_ntdll_NtContinue" -eq 1; then + if test "$enable_winebuild_Fake_Dlls" -gt 1; then + abort "Patchset winebuild-Fake_Dlls disabled, but ntdll-NtContinue depends on that." + fi + enable_winebuild_Fake_Dlls=1 +fi + if test "$enable_ntdll_HashLinks" -eq 1; then if test "$enable_ntdll_LDR_MODULE" -gt 1; then abort "Patchset ntdll-LDR_MODULE disabled, but ntdll-HashLinks depends on that." @@ -4738,90 +4727,6 @@ if test "$enable_ntdll_Manifest_Range" -eq 1; then ) >> "$patchlist" fi -# Patchset ntdll-Pipe_SpecialCharacters -# | -# | This patchset fixes the following Wine bugs: -# | * [#28995] Allow special characters in pipe names -# | -# | Modified files: -# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/directory.c -# | -if test "$enable_ntdll_Pipe_SpecialCharacters" -eq 1; then - patch_apply ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch - ( - printf '%s\n' '+ { "Michael Müller", "ntdll: Allow special characters in pipe names.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset ntdll-NtDevicePath -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Pipe_SpecialCharacters -# | -# | This patchset fixes the following Wine bugs: -# | * [#37487] Resolve \\SystemRoot\\ prefix when opening files -# | -# | Modified files: -# | * dlls/ntdll/directory.c, dlls/ntdll/tests/file.c -# | -if test "$enable_ntdll_NtDevicePath" -eq 1; then - patch_apply ntdll-NtDevicePath/0001-ntdll-Implement-opening-files-through-nt-device-path.patch - ( - printf '%s\n' '+ { "Michael Müller", "ntdll: Implement opening files through nt device paths.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset ntdll-NtQueryVirtualMemory -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Pipe_SpecialCharacters, ntdll-NtDevicePath -# | -# | This patchset fixes the following Wine bugs: -# | * [#23999] Implement MemorySectionName class in NtQueryVirtualMemory -# | * [#27248] Implement K32GetMappedFileName -# | -# | Modified files: -# | * dlls/kernel32/virtual.c, dlls/ntdll/directory.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/tests/info.c, dlls/ntdll/virtual.c, -# | dlls/psapi/tests/psapi_main.c, server/mapping.c, server/protocol.def -# | -if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then - patch_apply ntdll-NtQueryVirtualMemory/0002-ntdll-Split-logic-for-MemoryBasicInformation-into-a-.patch - patch_apply ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch - patch_apply ntdll-NtQueryVirtualMemory/0004-ntdll-tests-Add-tests-for-NtQueryVirtualMemory-Memor.patch - patch_apply ntdll-NtQueryVirtualMemory/0005-ntdll-tests-Add-test-to-ensure-section-name-is-full-.patch - patch_apply ntdll-NtQueryVirtualMemory/0006-ntdll-Allow-to-query-section-names-from-other-proces.patch - patch_apply ntdll-NtQueryVirtualMemory/0007-kernel32-Implement-K32GetMappedFileName.-v2.patch - patch_apply ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch - ( - printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll: Split logic for MemoryBasicInformation into a separate function.", 1 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll: Implement NtQueryVirtualMemory(MemorySectionName).", 3 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll/tests: Add tests for NtQueryVirtualMemory(MemorySectionName).", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "ntdll/tests: Add test to ensure section name is full path.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Allow to query section names from other processes.", 2 },'; - printf '%s\n' '+ { "Dmitry Timoshkov", "kernel32: Implement K32GetMappedFileName.", 2 },'; - printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Resolve drive symlinks before returning section name.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset ntdll-MemoryWorkingSetExInformation -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-Pipe_SpecialCharacters, ntdll-NtDevicePath, ntdll-NtQueryVirtualMemory -# | -# | This patchset fixes the following Wine bugs: -# | * [#45667] League of Legends 8.15+ fails due to missing implementation of -# | NtQueryVirtualMemory(MemoryWorkingSetExInformation) -# | -# | Modified files: -# | * dlls/ntdll/virtual.c, include/winternl.h -# | -if test "$enable_ntdll_MemoryWorkingSetExInformation" -eq 1; then - patch_apply ntdll-MemoryWorkingSetExInformation/0002-ntdll-Stub-for-MemoryWorkingSetExInformation.patch - ( - printf '%s\n' '+ { "Andrew Wesie", "ntdll: Stub for MemoryWorkingSetExInformation.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-NtAccessCheck # | # | Modified files: @@ -4856,6 +4761,39 @@ if test "$enable_ntdll_NtContinue" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-Pipe_SpecialCharacters +# | +# | This patchset fixes the following Wine bugs: +# | * [#28995] Allow special characters in pipe names +# | +# | Modified files: +# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/directory.c +# | +if test "$enable_ntdll_Pipe_SpecialCharacters" -eq 1; then + patch_apply ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll: Allow special characters in pipe names.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-NtDevicePath +# | +# | This patchset has the following (direct or indirect) dependencies: +# | * ntdll-Pipe_SpecialCharacters +# | +# | This patchset fixes the following Wine bugs: +# | * [#37487] Resolve \\SystemRoot\\ prefix when opening files +# | +# | Modified files: +# | * dlls/ntdll/directory.c, dlls/ntdll/tests/file.c +# | +if test "$enable_ntdll_NtDevicePath" -eq 1; then + patch_apply ntdll-NtDevicePath/0001-ntdll-Implement-opening-files-through-nt-device-path.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll: Implement opening files through nt device paths.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-NtQueryEaFile # | # | This patchset has the following (direct or indirect) dependencies: @@ -4883,6 +4821,36 @@ if test "$enable_ntdll_NtQuerySection" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-NtQueryVirtualMemory +# | +# | This patchset has the following (direct or indirect) dependencies: +# | * ntdll-Pipe_SpecialCharacters, ntdll-NtDevicePath +# | +# | This patchset fixes the following Wine bugs: +# | * [#23999] Implement MemorySectionName class in NtQueryVirtualMemory +# | * [#27248] Implement K32GetMappedFileName +# | +# | Modified files: +# | * dlls/kernel32/virtual.c, dlls/ntdll/directory.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/tests/info.c, dlls/ntdll/virtual.c, +# | dlls/psapi/tests/psapi_main.c, server/mapping.c, server/protocol.def +# | +if test "$enable_ntdll_NtQueryVirtualMemory" -eq 1; then + patch_apply ntdll-NtQueryVirtualMemory/0003-ntdll-Implement-NtQueryVirtualMemory-MemorySectionNa.patch + patch_apply ntdll-NtQueryVirtualMemory/0004-ntdll-tests-Add-tests-for-NtQueryVirtualMemory-Memor.patch + patch_apply ntdll-NtQueryVirtualMemory/0005-ntdll-tests-Add-test-to-ensure-section-name-is-full-.patch + patch_apply ntdll-NtQueryVirtualMemory/0006-ntdll-Allow-to-query-section-names-from-other-proces.patch + patch_apply ntdll-NtQueryVirtualMemory/0007-kernel32-Implement-K32GetMappedFileName.-v2.patch + patch_apply ntdll-NtQueryVirtualMemory/0008-ntdll-Resolve-drive-symlinks-before-returning-sectio.patch + ( + printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll: Implement NtQueryVirtualMemory(MemorySectionName).", 3 },'; + printf '%s\n' '+ { "Dmitry Timoshkov", "ntdll/tests: Add tests for NtQueryVirtualMemory(MemorySectionName).", 1 },'; + printf '%s\n' '+ { "Sebastian Lackner", "ntdll/tests: Add test to ensure section name is full path.", 1 },'; + printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Allow to query section names from other processes.", 2 },'; + printf '%s\n' '+ { "Dmitry Timoshkov", "kernel32: Implement K32GetMappedFileName.", 2 },'; + printf '%s\n' '+ { "Sebastian Lackner", "ntdll: Resolve drive symlinks before returning section name.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-NtSetLdtEntries # | # | Modified files: