Added kernelbase-CreateFile2 patchset

This commit is contained in:
Alistair Leslie-Hughes 2020-09-09 12:34:27 +10:00
parent 5969ae1e56
commit ec77bc9d66
3 changed files with 48 additions and 1 deletions

View File

@ -0,0 +1,29 @@
From 94c8ff1915712fb6fe00804ba618dac7633db432 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
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

View File

@ -0,0 +1 @@
Fixes: [49740] kernelbase: Also pass CreateFile2 flags to CreateFileW.

View File

@ -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: