From cf4a1f5af2cc90fcfbff4ae1a3f30f419b1e4981 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 18 Apr 2015 15:34:28 +0200 Subject: [PATCH] Added patch for stub of ntdll.WinSqmIsOptedIn. --- README.md | 3 +- debian/changelog | 1 + ...2-ntdll-Add-stub-for-WinSqmIsOptedIn.patch | 74 +++++++++++++++++++ patches/ntdll-WinSqm/definition | 1 + patches/patchinstall.sh | 3 + 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch diff --git a/README.md b/README.md index 517579ad..2b7f3805 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,10 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [9]:** +**Bug fixes and features included in the next upcoming release [10]:** * Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811)) +* Add stub for WinSqmIsOptedIn ([Wine Bug #38388](https://bugs.winehq.org/show_bug.cgi?id=38388)) * Add support for process specific debug channels * Add support for wbemprox Win32_SystemEnclosure table ([Wine Bug #34517](https://bugs.winehq.org/show_bug.cgi?id=34517)) * Calculate msvcrt exponential math operations with higher precision ([Wine Bug #37149](https://bugs.winehq.org/show_bug.cgi?id=37149)) diff --git a/debian/changelog b/debian/changelog index 3ff1728b..5e88572d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,7 @@ wine-staging (1.7.41) UNRELEASED; urgency=low * Added patch to implement support for wbemprox Win32_SystemEnclosure table. * Added patch to fix handling of opening read-only files for FILE_DELETE_ON_CLOSE. * Added patch for implementation of mfplat.MFTRegister. + * Added patch for stub of ntdll.WinSqmIsOptedIn. * Added tests for RtlIpv6AddressToString and RtlIpv6AddressToStringEx. * Removed patches to fix invalid memory access in get_registry_locale_info (accepted upstream). * Removed patches to avoid repeated FIXMEs in PsLookupProcessByProcessId stub (accepted upstream). diff --git a/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch b/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch new file mode 100644 index 00000000..51ee31e3 --- /dev/null +++ b/patches/ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch @@ -0,0 +1,74 @@ +From 335eee22883daada4e4c95c0ac13c64fe92e3d3a Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sat, 18 Apr 2015 15:25:30 +0200 +Subject: ntdll: Add stub for WinSqmIsOptedIn. + +Based on a patch by Stefan Leichter. +--- + dlls/ntdll/ntdll.spec | 1 + + dlls/ntdll/rtl.c | 9 +++++++++ + dlls/ntdll/tests/rtl.c | 4 ++++ + 3 files changed, 14 insertions(+) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 4053388..9225898 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -971,4 +971,5 @@ + @ stdcall -ret64 VerSetConditionMask(int64 long long) + @ stdcall WinSqmEndSession(ptr) ++@ stdcall WinSqmIsOptedIn() + @ stdcall WinSqmStartSession(ptr long long) + @ stdcall ZwAcceptConnectPort(ptr long ptr long long ptr) NtAcceptConnectPort +diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c +index 2e87beb..971c964 100644 +--- a/dlls/ntdll/rtl.c ++++ b/dlls/ntdll/rtl.c +@@ -1321,6 +1321,15 @@ NTSTATUS WINAPI WinSqmEndSession(PVOID unknown1) + return STATUS_NOT_IMPLEMENTED; + } + ++/********************************************************************* ++ * WinSqmIsOptedIn [NTDLL.@] ++ */ ++BOOL WINAPI WinSqmIsOptedIn(void) ++{ ++ FIXME("() stub!\n"); ++ return FALSE; ++} ++ + /****************************************************************************** + * WinSqmStartSession [NTDLL.@] + */ +diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c +index 1e6c6f8..7b5f07d 100644 +--- a/dlls/ntdll/tests/rtl.c ++++ b/dlls/ntdll/tests/rtl.c +@@ -63,6 +63,7 @@ static inline USHORT __my_ushort_swap(USHORT s) + /* Function ptrs for ntdll calls */ + static HMODULE hntdll = 0; + static PVOID (WINAPI *pWinSqmStartSession)(PVOID unknown1, DWORD unknown2, DWORD unknown3); ++static BOOL (WINAPI *pWinSqmIsOptedIn)(void); + static NTSTATUS (WINAPI *pWinSqmEndSession)(PVOID unknown1); + static SIZE_T (WINAPI *pRtlCompareMemory)(LPCVOID,LPCVOID,SIZE_T); + static SIZE_T (WINAPI *pRtlCompareMemoryUlong)(PULONG, SIZE_T, ULONG); +@@ -112,6 +113,7 @@ static void InitFunctionPtrs(void) + ok(hntdll != 0, "LoadLibrary failed\n"); + if (hntdll) { + pWinSqmStartSession = (void *)GetProcAddress(hntdll, "WinSqmStartSession"); ++ pWinSqmIsOptedIn = (void *)GetProcAddress(hntdll, "WinSqmIsOptedIn"); + pWinSqmEndSession = (void *)GetProcAddress(hntdll, "WinSqmEndSession"); + pRtlCompareMemory = (void *)GetProcAddress(hntdll, "RtlCompareMemory"); + pRtlCompareMemoryUlong = (void *)GetProcAddress(hntdll, "RtlCompareMemoryUlong"); +@@ -186,6 +188,8 @@ static void test_WinSqm(void) + + args = 3 - call_stdcall_func3( pWinSqmStartSession, NULL, 0, 0 ) / 4; + ok(args == 3, "WinSqmStartSession expected to take %d arguments instead of 3\n", args); ++ args = 3 - call_stdcall_func3( pWinSqmIsOptedIn, NULL, 0, 0 ) / 4; ++ ok(args == 0, "WinSqmIsOptedIn expected to take %d arguments instead of 0\n", args); + args = 3 - call_stdcall_func3( pWinSqmEndSession, NULL, 0, 0 ) / 4; + ok(args == 1, "WinSqmEndSession expected to take %d arguments instead of 1\n", args); + +-- +2.3.5 + diff --git a/patches/ntdll-WinSqm/definition b/patches/ntdll-WinSqm/definition index 20d41854..a703e5a9 100644 --- a/patches/ntdll-WinSqm/definition +++ b/patches/ntdll-WinSqm/definition @@ -1 +1,2 @@ Fixes: [31971] ntdll is missing WinSqm[Start|End]Session implementation +Fixes: [38388] Add stub for WinSqmIsOptedIn diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 61f5c0f5..0391240a 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -3493,14 +3493,17 @@ fi # | # | This patchset fixes the following Wine bugs: # | * [#31971] ntdll is missing WinSqm[Start|End]Session implementation +# | * [#38388] Add stub for WinSqmIsOptedIn # | # | Modified files: # | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c # | if test "$enable_ntdll_WinSqm" -eq 1; then patch_apply ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch + patch_apply ntdll-WinSqm/0002-ntdll-Add-stub-for-WinSqmIsOptedIn.patch ( echo '+ { "Erich E. Hoover", "ntdll: Add stubs for WinSqmStartSession / WinSqmEndSession.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Add stub for WinSqmIsOptedIn.", 1 },'; ) >> "$patchlist" fi