diff --git a/patches/kernelbase-CreateFile2/0001-kernelbase-Also-pass-CreateFile2-flags-to-CreateFile.patch b/patches/kernelbase-CreateFile2/0001-kernelbase-Also-pass-CreateFile2-flags-to-CreateFile.patch new file mode 100644 index 00000000..ca7dbbaf --- /dev/null +++ b/patches/kernelbase-CreateFile2/0001-kernelbase-Also-pass-CreateFile2-flags-to-CreateFile.patch @@ -0,0 +1,29 @@ +From 94c8ff1915712fb6fe00804ba618dac7633db432 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Bernon?= +Date: Tue, 8 Sep 2020 17:17:48 +0200 +Subject: [PATCH] kernelbase: Also pass CreateFile2 flags to CreateFileW. + +Instead of just attributes. + +Otherwise we may miss important flags like FILE_FLAG_OVERLAPPED and open +the file for synchronous I/O, causing a deadlock in Flight Simulator. +--- + dlls/kernelbase/file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c +index e022a29478e..4f30caaac7c 100644 +--- a/dlls/kernelbase/file.c ++++ b/dlls/kernelbase/file.c +@@ -718,7 +718,7 @@ HANDLE WINAPI DECLSPEC_HOTPATCH CreateFile2( LPCWSTR name, DWORD access, DWORD s + CREATEFILE2_EXTENDED_PARAMETERS *params ) + { + LPSECURITY_ATTRIBUTES sa = params ? params->lpSecurityAttributes : NULL; +- DWORD attributes = params ? params->dwFileAttributes : 0; ++ DWORD attributes = params ? (params->dwFileAttributes | params->dwFileFlags) : 0; + HANDLE template = params ? params->hTemplateFile : NULL; + + FIXME( "(%s %x %x %x %p), partial stub\n", debugstr_w(name), access, sharing, creation, params ); +-- +2.28.0 + diff --git a/patches/kernelbase-CreateFile2/definition b/patches/kernelbase-CreateFile2/definition new file mode 100644 index 00000000..42764e82 --- /dev/null +++ b/patches/kernelbase-CreateFile2/definition @@ -0,0 +1 @@ +Fixes: [49740] kernelbase: Also pass CreateFile2 flags to CreateFileW. diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index aecca5fe..022bd7fe 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -145,6 +145,7 @@ patch_enable_all () enable_kernel32_Job_Tests="$1" enable_kernel32_Processor_Group="$1" enable_kernel32_SetProcessDEPPolicy="$1" + enable_kernelbase_CreateFile2="$1" enable_krnl386_exe16_GDT_LDT_Emulation="$1" enable_krnl386_exe16_Invalid_Console_Handles="$1" enable_loader_KeyboardLayouts="$1" @@ -530,6 +531,9 @@ patch_enable () kernel32-SetProcessDEPPolicy) enable_kernel32_SetProcessDEPPolicy="$2" ;; + kernelbase-CreateFile2) + enable_kernelbase_CreateFile2="$2" + ;; krnl386.exe16-GDT_LDT_Emulation) enable_krnl386_exe16_GDT_LDT_Emulation="$2" ;; @@ -1893,7 +1897,8 @@ fi # | * [#49740] combase: Implement CoCreateInstanceFromApp semi-stub. # | # | Modified files: -# | * dlls/combase/combase.c, dlls/combase/combase.spec, dlls/ole32/ole32.spec +# | * dlls/api-ms-win-core-com-l1-1-0/api-ms-win-core-com-l1-1-0.spec, dlls/api-ms-win-core-com-l1-1-1/api-ms-win-core- +# | com-l1-1-1.spec, dlls/combase/combase.c, dlls/combase/combase.spec, dlls/ole32/ole32.spec # | if test "$enable_combase_CoCreateInstanceFromApp" -eq 1; then patch_apply combase-CoCreateInstanceFromApp/0001-combase-Implement-CoCreateInstanceFromApp-semi-stub.patch @@ -2710,6 +2715,18 @@ if test "$enable_kernel32_SetProcessDEPPolicy" -eq 1; then patch_apply kernel32-SetProcessDEPPolicy/0003-kernel32-Make-system-DEP-policy-affect-GetProcessDEP.patch fi +# Patchset kernelbase-CreateFile2 +# | +# | This patchset fixes the following Wine bugs: +# | * [#49740] kernelbase: Also pass CreateFile2 flags to CreateFileW. +# | +# | Modified files: +# | * dlls/kernelbase/file.c +# | +if test "$enable_kernelbase_CreateFile2" -eq 1; then + patch_apply kernelbase-CreateFile2/0001-kernelbase-Also-pass-CreateFile2-flags-to-CreateFile.patch +fi + # Patchset krnl386.exe16-GDT_LDT_Emulation # | # | This patchset fixes the following Wine bugs: