From b8b85852869c769f1bdb9db9ef0422b85df8c019 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Tue, 12 Apr 2016 07:00:54 +0200 Subject: [PATCH] Added patch for feclient stub dll. --- .../0026-feclient-Add-stub-dll.patch | 133 ++++++++ ...core-Add-dll-and-stub-some-functions.patch | 311 ++++++++++++++++++ patches/api-ms-win-Stub_DLLs/definition | 1 + patches/patchinstall.sh | 15 +- 4 files changed, 457 insertions(+), 3 deletions(-) create mode 100644 patches/api-ms-win-Stub_DLLs/0026-feclient-Add-stub-dll.patch create mode 100644 patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch diff --git a/patches/api-ms-win-Stub_DLLs/0026-feclient-Add-stub-dll.patch b/patches/api-ms-win-Stub_DLLs/0026-feclient-Add-stub-dll.patch new file mode 100644 index 00000000..2c946097 --- /dev/null +++ b/patches/api-ms-win-Stub_DLLs/0026-feclient-Add-stub-dll.patch @@ -0,0 +1,133 @@ +From 4a8b29b5a4c923cec3a78bd9f43e0fc736721cd7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 12 Apr 2016 01:00:02 +0200 +Subject: feclient: Add stub dll. + +--- + configure.ac | 1 + + dlls/feclient/Makefile.in | 4 ++++ + dlls/feclient/feclient.spec | 36 ++++++++++++++++++++++++++++++++++++ + dlls/feclient/main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 86 insertions(+) + create mode 100644 dlls/feclient/Makefile.in + create mode 100644 dlls/feclient/feclient.spec + create mode 100644 dlls/feclient/main.c + +diff --git a/configure.ac b/configure.ac +index 98bb7d7..39097d1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2957,6 +2957,7 @@ WINE_CONFIG_DLL(ext-ms-win-uxtheme-themes-l1-1-0) + WINE_CONFIG_DLL(ext-ms-win-xaml-pal-l1-1-0) + WINE_CONFIG_DLL(faultrep,,[implib]) + WINE_CONFIG_TEST(dlls/faultrep/tests) ++WINE_CONFIG_DLL(feclient) + WINE_CONFIG_DLL(fltlib) + WINE_CONFIG_DLL(fltmgr.sys) + WINE_CONFIG_DLL(fntcache) +diff --git a/dlls/feclient/Makefile.in b/dlls/feclient/Makefile.in +new file mode 100644 +index 0000000..d3eeefb +--- /dev/null ++++ b/dlls/feclient/Makefile.in +@@ -0,0 +1,4 @@ ++MODULE = feclient.dll ++ ++C_SRCS = \ ++ main.c +diff --git a/dlls/feclient/feclient.spec b/dlls/feclient/feclient.spec +new file mode 100644 +index 0000000..3620b85 +--- /dev/null ++++ b/dlls/feclient/feclient.spec +@@ -0,0 +1,36 @@ ++@ stub EdpContainerizeFile ++@ stub EdpCredentialCreate ++@ stub EdpCredentialDelete ++@ stub EdpCredentialExists ++@ stub EdpCredentialQuery ++@ stub EdpDecontainerizeFile ++@ stub EdpDplPolicyEnabledForUser ++@ stub EdpDplUpgradePinInfo ++@ stub EdpDplUpgradeVerifyUser ++@ stub EdpDplUserCredentialsSet ++@ stub EdpDplUserUnlockComplete ++@ stub EdpDplUserUnlockStart ++@ stub EdpFree ++@ stub EdpGetContainerIdentity ++@ stub EdpGetCredServiceState ++@ stub EdpQueryCredServiceInfo ++@ stub EdpQueryDplEnforcedPolicyOwnerIds ++@ stub EdpQueryRevokedPolicyOwnerIds ++@ stub EdpRmsClearKeys ++@ stub EdpSetCredServiceInfo ++@ stub EfsClientCloseFileRaw ++@ stub EfsClientDecryptFile ++@ stub EfsClientDuplicateEncryptionInfo ++@ stub EfsClientEncryptFileEx ++@ stub EfsClientFileEncryptionStatus ++@ stub EfsClientFreeProtectorList ++@ stub EfsClientGetEncryptedFileVersion ++@ stub EfsClientOpenFileRaw ++@ stub EfsClientQueryProtectors ++@ stub EfsClientReadFileRaw ++@ stub EfsClientWriteFileRaw ++@ stub EfsClientWriteFileWithHeaderRaw ++@ stub EfsUtilGetCurrentKey ++@ stub FeClientInitialize ++@ stub GetLockSessionUnwrappedKey ++@ stub GetLockSessionWrappedKey +diff --git a/dlls/feclient/main.c b/dlls/feclient/main.c +new file mode 100644 +index 0000000..91aed70 +--- /dev/null ++++ b/dlls/feclient/main.c +@@ -0,0 +1,45 @@ ++/* ++ * feclient API ++ * ++ * Copyright 2016 Michael Müller ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++ ++#include ++ ++#include "windef.h" ++#include "winbase.h" ++#include "wine/debug.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(feclient); ++ ++BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved) ++{ ++ TRACE("(%p, %u, %p)\n", instance, reason, reserved); ++ ++ switch (reason) ++ { ++ case DLL_WINE_PREATTACH: ++ return FALSE; /* prefer native version */ ++ case DLL_PROCESS_ATTACH: ++ DisableThreadLibraryCalls(instance); ++ break; ++ } ++ ++ return TRUE; ++} +-- +2.7.1 + diff --git a/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch b/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch new file mode 100644 index 00000000..8eb2ef86 --- /dev/null +++ b/patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch @@ -0,0 +1,311 @@ +From a1b20acdf908d93184138869d1fc105c133498ef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Tue, 12 Apr 2016 01:02:34 +0200 +Subject: uiautomationcore: Add dll and stub some functions. + +--- + configure.ac | 1 + + dlls/uiautomationcore/Makefile.in | 5 ++ + dlls/uiautomationcore/main.c | 117 ++++++++++++++++++++++++++++ + dlls/uiautomationcore/uiautomationcore.spec | 99 +++++++++++++++++++++++ + include/uiautomationcoreapi.h | 16 ++++ + 5 files changed, 238 insertions(+) + create mode 100644 dlls/uiautomationcore/Makefile.in + create mode 100644 dlls/uiautomationcore/main.c + create mode 100644 dlls/uiautomationcore/uiautomationcore.spec + +diff --git a/configure.ac b/configure.ac +index 39097d1..896d413 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3304,6 +3304,7 @@ WINE_CONFIG_TEST(dlls/twain_32/tests) + WINE_CONFIG_DLL(typelib.dll16,enable_win16) + WINE_CONFIG_DLL(ucrtbase) + WINE_CONFIG_TEST(dlls/ucrtbase/tests) ++WINE_CONFIG_DLL(uiautomationcore) + WINE_CONFIG_DLL(unicows,,[implib]) + WINE_CONFIG_DLL(updspapi) + WINE_CONFIG_DLL(url,,[implib]) +diff --git a/dlls/uiautomationcore/Makefile.in b/dlls/uiautomationcore/Makefile.in +new file mode 100644 +index 0000000..bd6f9d6 +--- /dev/null ++++ b/dlls/uiautomationcore/Makefile.in +@@ -0,0 +1,5 @@ ++MODULE = uiautomationcore.dll ++IMPORTS = uuid ++ ++C_SRCS = \ ++ main.c +diff --git a/dlls/uiautomationcore/main.c b/dlls/uiautomationcore/main.c +new file mode 100644 +index 0000000..71fe84c +--- /dev/null ++++ b/dlls/uiautomationcore/main.c +@@ -0,0 +1,117 @@ ++/* ++ * uiautomationcore API ++ * ++ * Copyright 2016 Michael Müller ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ++ */ ++ ++#include "config.h" ++ ++#include ++ ++#include "windef.h" ++#include "winbase.h" ++#include "wine/debug.h" ++ ++#define COBJMACROS ++#include "uiautomationcoreapi.h" ++ ++WINE_DEFAULT_DEBUG_CHANNEL(uiautomation); ++ ++static HRESULT WINAPI dummy_QueryInterface(IUnknown *iface, REFIID iid, void **ppv) ++{ ++ TRACE("(%p, %s, %p)\n", iface, debugstr_guid(iid), ppv); ++ ++ if (!ppv) return E_INVALIDARG; ++ ++ if (!IsEqualIID(&IID_IUnknown, iid)) ++ { ++ FIXME("Unknown interface: %s\n", debugstr_guid(iid)); ++ *ppv = NULL; ++ return E_NOINTERFACE; ++ } ++ ++ *ppv = iface; ++ IUnknown_AddRef((IUnknown *)*ppv); ++ return S_OK; ++} ++ ++static ULONG WINAPI dummy_AddRef(IUnknown *iface) ++{ ++ FIXME("(%p): stub\n", iface); ++ return 1; ++} ++ ++static ULONG WINAPI dummy_Release(IUnknown *iface) ++{ ++ FIXME("(%p): stub\n", iface); ++ return 1; ++} ++ ++static const IUnknownVtbl dummy_Vtbl = ++{ ++ dummy_QueryInterface, ++ dummy_AddRef, ++ dummy_Release, ++}; ++ ++static IUnknown dummy = { &dummy_Vtbl }; ++ ++int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid) ++{ ++ FIXME("(%d, %s)\n", type, debugstr_guid(guid)); ++ return 1; ++} ++ ++HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value) ++{ ++ FIXME("(%p): stub\n", value); ++ ++ *value = &dummy; ++ return S_OK; ++} ++ ++HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value) ++{ ++ FIXME("(%p): stub\n", value); ++ ++ *value = &dummy; ++ return S_OK; ++} ++ ++LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wparam, LPARAM lparam, ++ IRawElementProviderSimple *provider) ++{ ++ FIXME("(%p, %lx, %lx, %p): stub\n", hwnd, wparam, lparam, provider); ++ return 0; ++} ++ ++ ++BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved) ++{ ++ TRACE("(%p, %u, %p)\n", instance, reason, reserved); ++ ++ switch (reason) ++ { ++ case DLL_WINE_PREATTACH: ++ return FALSE; /* prefer native version */ ++ case DLL_PROCESS_ATTACH: ++ DisableThreadLibraryCalls(instance); ++ break; ++ } ++ ++ return TRUE; ++} +diff --git a/dlls/uiautomationcore/uiautomationcore.spec b/dlls/uiautomationcore/uiautomationcore.spec +new file mode 100644 +index 0000000..321cd06 +--- /dev/null ++++ b/dlls/uiautomationcore/uiautomationcore.spec +@@ -0,0 +1,99 @@ ++@ stub DllCanUnloadNow ++@ stub DllGetClassObject ++@ stub DllRegisterServer ++@ stub DllUnregisterServer ++@ stub DockPattern_SetDockPosition ++@ stub ExpandCollapsePattern_Collapse ++@ stub ExpandCollapsePattern_Expand ++@ stub GridPattern_GetItem ++@ stub InvokePattern_Invoke ++@ stub ItemContainerPattern_FindItemByProperty ++@ stub LegacyIAccessiblePattern_DoDefaultAction ++@ stub LegacyIAccessiblePattern_GetIAccessible ++@ stub LegacyIAccessiblePattern_Select ++@ stub LegacyIAccessiblePattern_SetValue ++@ stub MultipleViewPattern_GetViewName ++@ stub MultipleViewPattern_SetCurrentView ++@ stub RangeValuePattern_SetValue ++@ stub ScrollItemPattern_ScrollIntoView ++@ stub ScrollPattern_Scroll ++@ stub ScrollPattern_SetScrollPercent ++@ stub SelectionItemPattern_AddToSelection ++@ stub SelectionItemPattern_RemoveFromSelection ++@ stub SelectionItemPattern_Select ++@ stub SynchronizedInputPattern_Cancel ++@ stub SynchronizedInputPattern_StartListening ++@ stub TextPattern_GetSelection ++@ stub TextPattern_GetVisibleRanges ++@ stub TextPattern_RangeFromChild ++@ stub TextPattern_RangeFromPoint ++@ stub TextPattern_get_DocumentRange ++@ stub TextPattern_get_SupportedTextSelection ++@ stub TextRange_AddToSelection ++@ stub TextRange_Clone ++@ stub TextRange_Compare ++@ stub TextRange_CompareEndpoints ++@ stub TextRange_ExpandToEnclosingUnit ++@ stub TextRange_FindAttribute ++@ stub TextRange_FindText ++@ stub TextRange_GetAttributeValue ++@ stub TextRange_GetBoundingRectangles ++@ stub TextRange_GetChildren ++@ stub TextRange_GetEnclosingElement ++@ stub TextRange_GetText ++@ stub TextRange_Move ++@ stub TextRange_MoveEndpointByRange ++@ stub TextRange_MoveEndpointByUnit ++@ stub TextRange_RemoveFromSelection ++@ stub TextRange_ScrollIntoView ++@ stub TextRange_Select ++@ stub TogglePattern_Toggle ++@ stub TransformPattern_Move ++@ stub TransformPattern_Resize ++@ stub TransformPattern_Rotate ++@ stub UiaAddEvent ++@ stub UiaClientsAreListening ++@ stub UiaDisconnectAllProviders ++@ stub UiaDisconnectProvider ++@ stub UiaEventAddWindow ++@ stub UiaEventRemoveWindow ++@ stub UiaFind ++@ stub UiaGetErrorDescription ++@ stub UiaGetPatternProvider ++@ stub UiaGetPropertyValue ++@ stdcall UiaGetReservedMixedAttributeValue(ptr) ++@ stdcall UiaGetReservedNotSupportedValue(ptr) ++@ stub UiaGetRootNode ++@ stub UiaGetRuntimeId ++@ stub UiaGetUpdatedCache ++@ stub UiaHPatternObjectFromVariant ++@ stub UiaHTextRangeFromVariant ++@ stub UiaHUiaNodeFromVariant ++@ stub UiaHasServerSideProvider ++@ stub UiaHostProviderFromHwnd ++@ stub UiaIAccessibleFromProvider ++@ stdcall UiaLookupId(long ptr) ++@ stub UiaNavigate ++@ stub UiaNodeFromFocus ++@ stub UiaNodeFromHandle ++@ stub UiaNodeFromPoint ++@ stub UiaNodeFromProvider ++@ stub UiaNodeRelease ++@ stub UiaPatternRelease ++@ stub UiaProviderForNonClient ++@ stub UiaProviderFromIAccessible ++@ stub UiaRaiseAsyncContentLoadedEvent ++@ stub UiaRaiseAutomationEvent ++@ stub UiaRaiseAutomationPropertyChangedEvent ++@ stub UiaRaiseStructureChangedEvent ++@ stub UiaRaiseTextEditTextChangedEvent ++@ stub UiaRegisterProviderCallback ++@ stub UiaRemoveEvent ++@ stdcall UiaReturnRawElementProvider(long long long ptr) ++@ stub UiaSetFocus ++@ stub UiaTextRangeRelease ++@ stub ValuePattern_SetValue ++@ stub VirtualizedItemPattern_Realize ++@ stub WindowPattern_Close ++@ stub WindowPattern_SetWindowVisualState ++@ stub WindowPattern_WaitForInputIdle +diff --git a/include/uiautomationcoreapi.h b/include/uiautomationcoreapi.h +index 340f500..b9107ce 100644 +--- a/include/uiautomationcoreapi.h ++++ b/include/uiautomationcoreapi.h +@@ -19,6 +19,8 @@ + #ifndef _INC_UIAUTOMATIONCOREAPI + #define _INC_UIAUTOMATIONCOREAPI + ++#include "uiautomationcore.h" ++ + #ifdef __cplusplus + extern "C" { + #endif +@@ -34,6 +36,16 @@ extern "C" { + #define UiaAppendRuntimeId 3 + #define UiaRootObjectId -25 + ++typedef enum AutomationIdentifierType ++{ ++ AutomationIdentifierType_Property, ++ AutomationIdentifierType_Pattern, ++ AutomationIdentifierType_Event, ++ AutomationIdentifierType_ControlType, ++ AutomationIdentifierType_TextAttribute, ++ AutomationIdentifierType_LandmarkType, ++} AutomationIdentifierType; ++ + DECLARE_HANDLE(HUIANODE); + DECLARE_HANDLE(HUIAPATTERNOBJECT); + DECLARE_HANDLE(HUIATEXTRANGE); +@@ -41,6 +53,10 @@ DECLARE_HANDLE(HUIAEVENT); + + BOOL WINAPI UiaPatternRelease(HUIAPATTERNOBJECT hobj); + BOOL WINAPI UiaTextRangeRelease(HUIATEXTRANGE hobj); ++int WINAPI UiaLookupId(AutomationIdentifierType type, const GUID *guid); ++HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **value); ++HRESULT WINAPI UiaGetReservedNotSupportedValue(IUnknown **value); ++LRESULT WINAPI UiaReturnRawElementProvider(HWND hwnd, WPARAM wparam, LPARAM lparam, IRawElementProviderSimple *provider); + + #ifdef __cplusplus + } +-- +2.7.1 + diff --git a/patches/api-ms-win-Stub_DLLs/definition b/patches/api-ms-win-Stub_DLLs/definition index 95f0df00..7c0cd76e 100644 --- a/patches/api-ms-win-Stub_DLLs/definition +++ b/patches/api-ms-win-Stub_DLLs/definition @@ -19,6 +19,7 @@ Fixes: Add ext-ms-win-kernel32-package-current-l1-1-0 dll Fixes: Add kernelbase dll Fixes: Add iertutil dll Fixes: Add shcore dll +Fixes: [40451] Add feclient dll Depends: kernel32-FreeUserPhysicalPages Depends: kernel32-GetCurrentPackageFamilyName Depends: combase-RoApi diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 6637b5e5..5201210c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -2599,6 +2599,9 @@ fi # | This patchset has the following (direct or indirect) dependencies: # | * combase-RoApi, kernel32-FreeUserPhysicalPages, kernel32-GetCurrentPackageFamilyName # | +# | This patchset fixes the following Wine bugs: +# | * [#40451] Add feclient dll +# | # | Modified files: # | * configure.ac, dlls/api-ms-win-appmodel-runtime-l1-1-1/Makefile.in, dlls/api-ms-win-appmodel-runtime-l1-1-1/api-ms-win- # | appmodel-runtime-l1-1-1.spec, dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in, dlls/api-ms-win-core-apiquery-l1-1-0 @@ -2621,9 +2624,11 @@ fi # | sysparams-l1-1-0/ext-ms-win-rtcore-ntuser-sysparams-l1-1-0.spec, dlls/ext-ms-win-uxtheme-themes-l1-1-0/Makefile.in, dlls # | /ext-ms-win-uxtheme-themes-l1-1-0/ext-ms-win-uxtheme-themes-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/Makefile.in, # | dlls/ext-ms-win-xaml-pal-l1-1-0/ext-ms-win-xaml-pal-l1-1-0.spec, dlls/ext-ms-win-xaml-pal-l1-1-0/main.c, -# | dlls/iertutil/Makefile.in, dlls/iertutil/iertutil.spec, dlls/iertutil/main.c, dlls/kernelbase/Makefile.in, -# | dlls/kernelbase/kernelbase.spec, dlls/kernelbase/misc.c, dlls/shcore/Makefile.in, dlls/shcore/main.c, -# | dlls/shcore/shcore.spec, dlls/shlwapi/shlwapi.spec, include/Makefile.in, include/shellscalingapi.h, tools/make_specfiles +# | dlls/feclient/Makefile.in, dlls/feclient/feclient.spec, dlls/feclient/main.c, dlls/iertutil/Makefile.in, +# | dlls/iertutil/iertutil.spec, dlls/iertutil/main.c, dlls/kernelbase/Makefile.in, dlls/kernelbase/kernelbase.spec, +# | dlls/kernelbase/misc.c, dlls/shcore/Makefile.in, dlls/shcore/main.c, dlls/shcore/shcore.spec, dlls/shlwapi/shlwapi.spec, +# | dlls/uiautomationcore/Makefile.in, dlls/uiautomationcore/main.c, dlls/uiautomationcore/uiautomationcore.spec, +# | include/Makefile.in, include/shellscalingapi.h, include/uiautomationcoreapi.h, tools/make_specfiles # | if test "$enable_api_ms_win_Stub_DLLs" -eq 1; then patch_apply api-ms-win-Stub_DLLs/0001-kernelbase-Add-dll-and-add-stub-for-QuirkIsEnabled.patch @@ -2651,6 +2656,8 @@ if test "$enable_api_ms_win_Stub_DLLs" -eq 1; then patch_apply api-ms-win-Stub_DLLs/0023-shcore-Implement-stub-for-GetDpiForMonitor.patch patch_apply api-ms-win-Stub_DLLs/0024-kernelbase-Add-stub-for-QuirkIsEnabled3.patch patch_apply api-ms-win-Stub_DLLs/0025-shcore-Add-stub-for-GetProcessDpiAwareness.patch + patch_apply api-ms-win-Stub_DLLs/0026-feclient-Add-stub-dll.patch + patch_apply api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch ( echo '+ { "Michael Müller", "kernelbase: Add dll and add stub for QuirkIsEnabled.", 1 },'; echo '+ { "Michael Müller", "api-ms-win-core-quirks-l1-1-0: Add dll.", 1 },'; @@ -2677,6 +2684,8 @@ if test "$enable_api_ms_win_Stub_DLLs" -eq 1; then echo '+ { "Sebastian Lackner", "shcore: Implement stub for GetDpiForMonitor.", 1 },'; echo '+ { "Michael Müller", "kernelbase: Add stub for QuirkIsEnabled3.", 1 },'; echo '+ { "Sebastian Lackner", "shcore: Add stub for GetProcessDpiAwareness.", 1 },'; + echo '+ { "Michael Müller", "feclient: Add stub dll.", 1 },'; + echo '+ { "Michael Müller", "uiautomationcore: Add dll and stub some functions.", 1 },'; ) >> "$patchlist" fi