diff --git a/README.md b/README.md index 0412b2cc..f4a23e73 100644 --- a/README.md +++ b/README.md @@ -39,13 +39,14 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [16]:** +**Bug fixes and features included in the next upcoming release [17]:** * Add HTTP Host header in HttpSendRequest instead of HttpOpenRequest ([Wine Bug #28911](https://bugs.winehq.org/show_bug.cgi?id=28911)) * Add IEnumString stub interface for ACLShellSource ([Wine Bug #18019](https://bugs.winehq.org/show_bug.cgi?id=18019)) * Add implementation for shlwapi.AssocGetPerceivedType * Add stub for atl80.AtlIPersistPropertyBag_Save ([Wine Bug #33888](https://bugs.winehq.org/show_bug.cgi?id=33888)) * Add stub for fltlib.FilterLoad ([Wine Bug #38435](https://bugs.winehq.org/show_bug.cgi?id=38435)) +* Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) ([Wine Bug #38493](https://bugs.winehq.org/show_bug.cgi?id=38493)) * Add stub for winsta.WinStationEnumerateW ([Wine Bug #38102](https://bugs.winehq.org/show_bug.cgi?id=38102)) * Allocate fake hWnd for wineconsole curses backend ([Wine Bug #34930](https://bugs.winehq.org/show_bug.cgi?id=34930)) * Create stub files for system32/drivers/etc/{services,hosts,networks,protocol} ([Wine Bug #12076](https://bugs.winehq.org/show_bug.cgi?id=12076)) diff --git a/debian/changelog b/debian/changelog index 45855421..301f7274 100644 --- a/debian/changelog +++ b/debian/changelog @@ -43,6 +43,8 @@ wine-staging (1.7.43) UNRELEASED; urgency=low * Added various additional fixes for wininet header handling. * Added patch to free RPC parameters allocated by application before anything else. + * Added patch with stub for kernel32.SetFileCompletionNotificationModes (for + Steam in Win7 mode). * Removed patch to use lockfree implementation for FD cache (accepted upstream). * Removed patch to properly handle closing sockets during a select call diff --git a/patches/kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch b/patches/kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch new file mode 100644 index 00000000..d02db3e3 --- /dev/null +++ b/patches/kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch @@ -0,0 +1,76 @@ +From a36a4386b6dc0356b0d5d0bf616068a282c66ac9 Mon Sep 17 00:00:00 2001 +From: "Olivier F. R. Dierick" +Date: Thu, 30 Apr 2015 22:58:37 +0200 +Subject: kernel32: Implement SetFileCompletionNotificationModes as a stub. + +--- + .../api-ms-win-core-kernel32-legacy-l1-1-0.spec | 2 +- + dlls/kernel32/file.c | 12 ++++++++++++ + dlls/kernel32/kernel32.spec | 2 +- + include/winbase.h | 1 + + 4 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec +index f4b9050..7c196c9 100644 +--- a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec ++++ b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec +@@ -45,7 +45,7 @@ + @ stub RaiseFailFastException + @ stdcall RegisterWaitForSingleObject(ptr long ptr ptr long long) kernel32.RegisterWaitForSingleObject + @ stdcall SetConsoleTitleA(str) kernel32.SetConsoleTitleA +-@ stub SetFileCompletionNotificationModes ++@ stdcall SetFileCompletionNotificationModes(long long) kernel32.SetFileCompletionNotificationModes + @ stdcall SetHandleCount(long) kernel32.SetHandleCount + @ stdcall SetMailslotInfo(long long) kernel32.SetMailslotInfo + @ stdcall SetVolumeLabelW(wstr wstr) kernel32.SetVolumeLabelW +diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c +index 006db1c..4695c9c 100644 +--- a/dlls/kernel32/file.c ++++ b/dlls/kernel32/file.c +@@ -1037,6 +1037,18 @@ BOOL WINAPI SetEndOfFile( HANDLE hFile ) + return FALSE; + } + ++ ++/************************************************************************** ++ * SetFileCompletionNotificationModes (KERNEL32.@) ++ */ ++BOOL WINAPI SetFileCompletionNotificationModes( HANDLE file, UCHAR flags ) ++{ ++ FIXME("%p %x - stub\n", file, flags); ++ SetLastError(ERROR_CALL_NOT_IMPLEMENTED); ++ return FALSE; ++} ++ ++ + BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS class, VOID *info, DWORD size ) + { + FIXME("%p %u %p %u - stub\n", file, class, info, size); +diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec +index 1261738..cece08e 100644 +--- a/dlls/kernel32/kernel32.spec ++++ b/dlls/kernel32/kernel32.spec +@@ -1392,7 +1392,7 @@ + # @ stub SetFileAttributesTransactedW + @ stdcall SetFileAttributesW(wstr long) + # @ stub SetFileBandwidthReservation +-# @ stub SetFileCompletionNotificationModes ++@ stdcall SetFileCompletionNotificationModes(long long) + @ stdcall SetFileInformationByHandle(long long ptr long) + # @ stub SetFileIoOverlappedRange + @ stdcall SetFilePointer(long long ptr long) +diff --git a/include/winbase.h b/include/winbase.h +index a8f3fb6..6fba12d 100644 +--- a/include/winbase.h ++++ b/include/winbase.h +@@ -2377,6 +2377,7 @@ WINBASEAPI VOID WINAPI SetFileApisToOEM(void); + WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD); + WINBASEAPI BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD); + #define SetFileAttributes WINELIB_NAME_AW(SetFileAttributes) ++WINBASEAPI BOOL WINAPI SetFileCompletionNotificationModes(HANDLE,UCHAR); + WINBASEAPI DWORD WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD); + WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,LARGE_INTEGER*,DWORD); + WINADVAPI BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); +-- +2.4.0 + diff --git a/patches/kernel32-SetFileCompletionNotificationMode/definition b/patches/kernel32-SetFileCompletionNotificationMode/definition new file mode 100644 index 00000000..386c1835 --- /dev/null +++ b/patches/kernel32-SetFileCompletionNotificationMode/definition @@ -0,0 +1 @@ +Fixes: [38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) diff --git a/patches/kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch b/patches/kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch index ecc5a8b1..a1dbab0e 100644 --- a/patches/kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch +++ b/patches/kernel32-SetFileInformationByHandle/0002-kernel32-Implement-SetFileInformationByHandle.patch @@ -1,4 +1,4 @@ -From f13e94038f8a3c59dd184013b747cc31ef4b6f9a Mon Sep 17 00:00:00 2001 +From 10d1d2f0b8cdb956ef4d8df5386a446c97451b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 26 Feb 2015 06:08:58 +0100 Subject: kernel32: Implement SetFileInformationByHandle. @@ -9,7 +9,7 @@ Subject: kernel32: Implement SetFileInformationByHandle. 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c -index 006db1c..ffecef3 100644 +index 4695c9c..bfb2a81 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c @@ -48,6 +48,22 @@ @@ -35,7 +35,7 @@ index 006db1c..ffecef3 100644 WINE_DEFAULT_DEBUG_CHANNEL(file); /* info structure for FindFirstFile handle */ -@@ -1039,7 +1055,91 @@ BOOL WINAPI SetEndOfFile( HANDLE hFile ) +@@ -1051,7 +1067,91 @@ BOOL WINAPI SetFileCompletionNotificationModes( HANDLE file, UCHAR flags ) BOOL WINAPI SetFileInformationByHandle( HANDLE file, FILE_INFO_BY_HANDLE_CLASS class, VOID *info, DWORD size ) { @@ -129,17 +129,17 @@ index 006db1c..ffecef3 100644 } diff --git a/include/winbase.h b/include/winbase.h -index 2b6df8d..a4c5408 100644 +index 6e6da9b..0d20107 100644 --- a/include/winbase.h +++ b/include/winbase.h -@@ -2447,6 +2447,7 @@ WINBASEAPI VOID WINAPI SetFileApisToOEM(void); - WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD); +@@ -2466,6 +2466,7 @@ WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD); WINBASEAPI BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD); #define SetFileAttributes WINELIB_NAME_AW(SetFileAttributes) + WINBASEAPI BOOL WINAPI SetFileCompletionNotificationModes(HANDLE,UCHAR); +WINBASEAPI BOOL WINAPI SetFileInformationByHandle(HANDLE,FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD); WINBASEAPI DWORD WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD); WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE,LARGE_INTEGER,LARGE_INTEGER*,DWORD); WINADVAPI BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR); -- -2.3.0 +2.4.0 diff --git a/patches/kernel32-SetFileInformationByHandle/definition b/patches/kernel32-SetFileInformationByHandle/definition index a6ab0832..f2886890 100644 --- a/patches/kernel32-SetFileInformationByHandle/definition +++ b/patches/kernel32-SetFileInformationByHandle/definition @@ -1 +1,2 @@ Fixes: Implement SetFileInformationByHandle +Depends: kernel32-SetFileCompletionNotificationMode diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 067dae38..82f24f31 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -143,6 +143,7 @@ patch_enable_all () enable_kernel32_Named_Pipe="$1" enable_kernel32_NeedCurrentDirectoryForExePath="$1" enable_kernel32_Profile="$1" + enable_kernel32_SetFileCompletionNotificationMode="$1" enable_kernel32_SetFileInformationByHandle="$1" enable_kernel32_VerifyVersionInfo="$1" enable_libs_Debug_Channel="$1" @@ -497,6 +498,9 @@ patch_enable () kernel32-Profile) enable_kernel32_Profile="$2" ;; + kernel32-SetFileCompletionNotificationMode) + enable_kernel32_SetFileCompletionNotificationMode="$2" + ;; kernel32-SetFileInformationByHandle) enable_kernel32_SetFileInformationByHandle="$2" ;; @@ -1579,6 +1583,13 @@ if test "$enable_kernel32_CopyFileEx" -eq 1; then enable_ntdll_FileDispositionInformation=1 fi +if test "$enable_kernel32_SetFileInformationByHandle" -eq 1; then + if test "$enable_kernel32_SetFileCompletionNotificationMode" -gt 1; then + abort "Patchset kernel32-SetFileCompletionNotificationMode disabled, but kernel32-SetFileInformationByHandle depends on that." + fi + enable_kernel32_SetFileCompletionNotificationMode=1 +fi + if test "$enable_ntdll_FileDispositionInformation" -eq 1; then if test "$enable_server_File_Permissions" -gt 1; then abort "Patchset server-File_Permissions disabled, but ntdll-FileDispositionInformation depends on that." @@ -1818,6 +1829,23 @@ if test "$enable_advapi32_ImpersonateAnonymousToken" -eq 1; then ) >> "$patchlist" fi +# Patchset server-Misc_ACL +# | +# | This patchset fixes the following Wine bugs: +# | * [#15980] GetSecurityInfo returns NULL DACL for process object +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c +# | +if test "$enable_server_Misc_ACL" -eq 1; then + patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch + patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch + ( + echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; + ) >> "$patchlist" +fi + # Patchset server-CreateProcess_ACLs # | # | This patchset fixes the following Wine bugs: @@ -1837,23 +1865,6 @@ if test "$enable_server_CreateProcess_ACLs" -eq 1; then ) >> "$patchlist" fi -# Patchset server-Misc_ACL -# | -# | This patchset fixes the following Wine bugs: -# | * [#15980] GetSecurityInfo returns NULL DACL for process object -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c -# | -if test "$enable_server_Misc_ACL" -eq 1; then - patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch - patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch - ( - echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; - echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; - ) >> "$patchlist" -fi - # Patchset advapi32-LsaLookupSids # | # | Modified files: @@ -2471,6 +2482,18 @@ if test "$enable_dxgi_GetDesc" -eq 1; then ) >> "$patchlist" fi +# Patchset makedep-PARENTSPEC +# | +# | Modified files: +# | * tools/makedep.c +# | +if test "$enable_makedep_PARENTSPEC" -eq 1; then + patch_apply makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch + ( + echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-DllRedirects # | # | Modified files: @@ -2491,18 +2514,6 @@ if test "$enable_ntdll_DllRedirects" -eq 1; then ) >> "$patchlist" fi -# Patchset makedep-PARENTSPEC -# | -# | Modified files: -# | * tools/makedep.c -# | -if test "$enable_makedep_PARENTSPEC" -eq 1; then - patch_apply makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch - ( - echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-CSMT_Helper # | # | Modified files: @@ -2519,6 +2530,18 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then ) >> "$patchlist" fi +# Patchset wined3d-UnhandledBlendFactor +# | +# | Modified files: +# | * dlls/wined3d/state.c +# | +if test "$enable_wined3d_UnhandledBlendFactor" -eq 1; then + patch_apply wined3d-UnhandledBlendFactor/0001-wined3d-Silence-repeated-Unhandled-blend-factor-0-me.patch + ( + echo '+ { "Sebastian Lackner", "wined3d: Silence repeated '\''Unhandled blend factor 0'\'' messages.", 1 },'; + ) >> "$patchlist" +fi + # Patchset wined3d-resource_check_usage # | # | Modified files: @@ -2607,18 +2630,6 @@ if test "$enable_wined3d_Revert_PixelFormat" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-UnhandledBlendFactor -# | -# | Modified files: -# | * dlls/wined3d/state.c -# | -if test "$enable_wined3d_UnhandledBlendFactor" -eq 1; then - patch_apply wined3d-UnhandledBlendFactor/0001-wined3d-Silence-repeated-Unhandled-blend-factor-0-me.patch - ( - echo '+ { "Sebastian Lackner", "wined3d: Silence repeated '\''Unhandled blend factor 0'\'' messages.", 1 },'; - ) >> "$patchlist" -fi - # Patchset wined3d-CSMT_Main # | # | This patchset fixes the following Wine bugs: @@ -3266,6 +3277,22 @@ if test "$enable_ntdll_FileDispositionInformation" -eq 1; then ) >> "$patchlist" fi +# Patchset kernel32-SetFileCompletionNotificationMode +# | +# | This patchset fixes the following Wine bugs: +# | * [#38493] Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) +# | +# | Modified files: +# | * dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec, dlls/kernel32/file.c, +# | dlls/kernel32/kernel32.spec, include/winbase.h +# | +if test "$enable_kernel32_SetFileCompletionNotificationMode" -eq 1; then + patch_apply kernel32-SetFileCompletionNotificationMode/0001-kernel32-Implement-SetFileCompletionNotificationMode.patch + ( + echo '+ { "Olivier F. R. Dierick", "kernel32: Implement SetFileCompletionNotificationModes as a stub.", 1 },'; + ) >> "$patchlist" +fi + # Patchset kernel32-SetFileInformationByHandle # | # | Modified files: