From: Sebastian Lackner sebastian@fds-team.de
Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Patch adapted from Wine Staging.
include/Makefile.in | 1 + include/shellscalingapi.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 include/shellscalingapi.h
diff --git a/include/Makefile.in b/include/Makefile.in index bb6f8d6fab..b975dd585e 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -617,6 +617,7 @@ HEADER_SRCS = \ sfc.h \ shdispid.h \ shellapi.h \ + shellscalingapi.h \ shlguid.h \ shlobj.h \ shlwapi.h \ diff --git a/include/shellscalingapi.h b/include/shellscalingapi.h new file mode 100644 index 0000000000..4999db741a --- /dev/null +++ b/include/shellscalingapi.h @@ -0,0 +1,37 @@ +/* + * Copyright 2016 Sebastian Lackner + * + * 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 + */ + +#ifndef __WINE_SHELLSCALINGAPI_H +#define __WINE_SHELLSCALINGAPI_H + +typedef enum MONITOR_DPI_TYPE +{ + MDT_EFFECTIVE_DPI = 0, + MDT_ANGULAR_DPI = 1, + MDT_RAW_DPI = 2, + MDT_DEFAULT = MDT_EFFECTIVE_DPI, +} MONITOR_DPI_TYPE; + +typedef enum PROCESS_DPI_AWARENESS +{ + PROCESS_DPI_UNAWARE = 0, + PROCESS_SYSTEM_DPI_AWARE = 1, + PROCESS_PER_MONITOR_DPI_AWARE = 2, +} PROCESS_DPI_AWARENESS; + +#endif /* __WINE_SHELLSCALINGAPI_H */
From: Sebastian Lackner sebastian@fds-team.de
Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Patch adapted from Wine Staging.
configure.ac | 1 + dlls/shcore/Makefile.in | 4 +++ dlls/shcore/main.c | 43 +++++++++++++++++++++++++ dlls/shcore/shcore.spec | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/make_specfiles | 7 ++++- 5 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 dlls/shcore/Makefile.in create mode 100644 dlls/shcore/main.c create mode 100644 dlls/shcore/shcore.spec
diff --git a/configure.ac b/configure.ac index 8bedfe87a5..e5afd6b1c1 100644 --- a/configure.ac +++ b/configure.ac @@ -3529,6 +3529,7 @@ WINE_CONFIG_TEST(dlls/setupapi/tests) WINE_CONFIG_DLL(setupx.dll16,enable_win16) WINE_CONFIG_DLL(sfc,,[implib]) WINE_CONFIG_DLL(sfc_os,,[implib]) +WINE_CONFIG_DLL(shcore) WINE_CONFIG_DLL(shdoclc,,[clean]) WINE_CONFIG_DLL(shdocvw,,[clean,implib]) WINE_CONFIG_TEST(dlls/shdocvw/tests) diff --git a/dlls/shcore/Makefile.in b/dlls/shcore/Makefile.in new file mode 100644 index 0000000000..ec2e95f526 --- /dev/null +++ b/dlls/shcore/Makefile.in @@ -0,0 +1,4 @@ +MODULE = shcore.dll + +C_SRCS = \ + main.c diff --git a/dlls/shcore/main.c b/dlls/shcore/main.c new file mode 100644 index 0000000000..abb9b3bdb8 --- /dev/null +++ b/dlls/shcore/main.c @@ -0,0 +1,43 @@ +/* + * Copyright 2016 Sebastian Lackner + * + * 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 <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "shellscalingapi.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(shcore); + +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/shcore/shcore.spec b/dlls/shcore/shcore.spec new file mode 100644 index 0000000000..12a4ef3ee8 --- /dev/null +++ b/dlls/shcore/shcore.spec @@ -0,0 +1,83 @@ +@ stdcall CommandLineToArgvW(wstr ptr) shell32.CommandLineToArgvW +@ stub CreateRandomAccessStreamOnFile +@ stub CreateRandomAccessStreamOverStream +@ stub CreateStreamOverRandomAccessStream +@ stdcall -private DllCanUnloadNow() shell32.DllCanUnloadNow +@ stub DllGetActivationFactory +@ stdcall -private DllGetClassObject(ptr ptr ptr) shell32.DllGetClassObject +@ stdcall GetCurrentProcessExplicitAppUserModelID(ptr) shell32.GetCurrentProcessExplicitAppUserModelID +@ stub GetDpiForMonitor +@ stub GetDpiForShellUIComponent +@ stub GetProcessDpiAwareness +@ stub GetProcessReference +@ stub GetScaleFactorForDevice +@ stub GetScaleFactorForMonitor +@ stub IStream_Copy +@ stdcall IStream_Read(ptr ptr long) shlwapi.IStream_Read +@ stub IStream_ReadStr +@ stdcall IStream_Reset(ptr) shlwapi.IStream_Reset +@ stdcall IStream_Size(ptr ptr) shlwapi.IStream_Size +@ stdcall IStream_Write(ptr ptr long) shlwapi.IStream_Write +@ stub IStream_WriteStr +@ stdcall IUnknown_AtomicRelease(long) shlwapi.IUnknown_AtomicRelease +@ stdcall IUnknown_GetSite(ptr ptr ptr) shlwapi.IUnknown_GetSite +@ stdcall IUnknown_QueryService(ptr ptr ptr ptr) shlwapi.IUnknown_QueryService +@ stdcall IUnknown_Set(ptr ptr) shlwapi.IUnknown_Set +@ stdcall IUnknown_SetSite(ptr ptr) shlwapi.IUnknown_SetSite +@ stdcall IsOS(long) shlwapi.IsOS +@ stub RegisterScaleChangeEvent +@ stub RegisterScaleChangeNotifications +@ stub RevokeScaleChangeNotifications +@ stdcall SHAnsiToAnsi(str ptr long) shlwapi.SHAnsiToAnsi +@ stdcall SHAnsiToUnicode(str ptr long) shlwapi.SHAnsiToUnicode +@ stdcall SHCopyKeyA(long str long long) shlwapi.SHCopyKeyA +@ stdcall SHCopyKeyW(long wstr long long) shlwapi.SHCopyKeyW +@ stdcall SHCreateMemStream(ptr long) shlwapi.SHCreateMemStream +@ stdcall SHCreateStreamOnFileA(str long ptr) shlwapi.SHCreateStreamOnFileA +@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr) shlwapi.SHCreateStreamOnFileEx +@ stdcall SHCreateStreamOnFileW(wstr long ptr) shlwapi.SHCreateStreamOnFileW +@ stdcall SHCreateThread(ptr ptr long ptr) shlwapi.SHCreateThread +@ stdcall SHCreateThreadRef(ptr ptr) shlwapi.SHCreateThreadRef +@ stub SHCreateThreadWithHandle +@ stdcall SHDeleteEmptyKeyA(long ptr) shlwapi.SHDeleteEmptyKeyA +@ stdcall SHDeleteEmptyKeyW(long ptr) shlwapi.SHDeleteEmptyKeyW +@ stdcall SHDeleteKeyA(long str) shlwapi.SHDeleteKeyA +@ stdcall SHDeleteKeyW(long wstr) shlwapi.SHDeleteKeyW +@ stdcall SHDeleteValueA(long str str) shlwapi.SHDeleteValueA +@ stdcall SHDeleteValueW(long wstr wstr) shlwapi.SHDeleteValueW +@ stdcall SHEnumKeyExA(long long str ptr) shlwapi.SHEnumKeyExA +@ stdcall SHEnumKeyExW(long long wstr ptr) shlwapi.SHEnumKeyExW +@ stdcall SHEnumValueA(long long str ptr ptr ptr ptr) shlwapi.SHEnumValueA +@ stdcall SHEnumValueW(long long wstr ptr ptr ptr ptr) shlwapi.SHEnumValueW +@ stdcall SHGetThreadRef(ptr) shlwapi.SHGetThreadRef +@ stdcall SHGetValueA( long str str ptr ptr ptr ) shlwapi.SHGetValueA +@ stdcall SHGetValueW( long wstr wstr ptr ptr ptr ) shlwapi.SHGetValueW +@ stdcall SHOpenRegStream2A(long str str long) shlwapi.SHOpenRegStream2A +@ stdcall SHOpenRegStream2W(long wstr wstr long) shlwapi.SHOpenRegStream2W +@ stdcall SHOpenRegStreamA(long str str long) shlwapi.SHOpenRegStreamA +@ stdcall SHOpenRegStreamW(long wstr wstr long) shlwapi.SHOpenRegStreamW +@ stdcall SHQueryInfoKeyA(long ptr ptr ptr ptr) shlwapi.SHQueryInfoKeyA +@ stdcall SHQueryInfoKeyW(long ptr ptr ptr ptr) shlwapi.SHQueryInfoKeyW +@ stdcall SHQueryValueExA(long str ptr ptr ptr ptr) shlwapi.SHQueryValueExA +@ stdcall SHQueryValueExW(long wstr ptr ptr ptr ptr) shlwapi.SHQueryValueExW +@ stdcall SHRegDuplicateHKey(long) shlwapi.SHRegDuplicateHKey +@ stdcall SHRegGetIntW(ptr wstr long) shlwapi.SHRegGetIntW +@ stdcall SHRegGetPathA(long str str ptr long) shlwapi.SHRegGetPathA +@ stdcall SHRegGetPathW(long wstr wstr ptr long) shlwapi.SHRegGetPathW +@ stdcall SHRegGetValueA( long str str long ptr ptr ptr ) shlwapi.SHRegGetValueA +@ stub SHRegGetValueFromHKCUHKLM +@ stdcall SHRegGetValueW( long wstr wstr long ptr ptr ptr ) shlwapi.SHRegGetValueW +@ stdcall SHRegSetPathA(long str str str long) shlwapi.SHRegSetPathA +@ stdcall SHRegSetPathW(long wstr wstr wstr long) shlwapi.SHRegSetPathW +@ stdcall SHReleaseThreadRef() shlwapi.SHReleaseThreadRef +@ stdcall SHSetThreadRef(ptr) shlwapi.SHSetThreadRef +@ stdcall SHSetValueA(long str str long ptr long) shlwapi.SHSetValueA +@ stdcall SHSetValueW(long wstr wstr long ptr long) shlwapi.SHSetValueW +@ stdcall SHStrDupA(str ptr) shlwapi.SHStrDupA +@ stdcall SHStrDupW(wstr ptr) shlwapi.SHStrDupW +@ stdcall SHUnicodeToAnsi(wstr ptr ptr) shlwapi.SHUnicodeToAnsi +@ stdcall SHUnicodeToUnicode(wstr ptr long) shlwapi.SHUnicodeToUnicode +@ stdcall SetCurrentProcessExplicitAppUserModelID(wstr) shell32.SetCurrentProcessExplicitAppUserModelID +@ stub SetProcessDpiAwareness +@ stub SetProcessReference +@ stub UnregisterScaleChangeEvent diff --git a/tools/make_specfiles b/tools/make_specfiles index 1833cb6d1b..417cf50ac3 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -322,9 +322,14 @@ my @dll_groups = "api-ms-win-core-shlwapi-legacy-l1-1-0", "api-ms-win-core-shlwapi-obsolete-l1-1-0", "api-ms-win-core-shlwapi-obsolete-l1-2-0", - "api-ms-win-shcore-scaling-l1-1-1", "api-ms-win-core-url-l1-1-0", ], + [ + "shell32", + "shlwapi", + "shcore", + "api-ms-win-shcore-scaling-l1-1-1", + ], [ "user32", "api-ms-win-core-stringansi-l1-1-0",
Alex Henrie alexhenrie24@gmail.com writes:
From: Sebastian Lackner sebastian@fds-team.de
Signed-off-by: Alex Henrie alexhenrie24@gmail.com
Patch adapted from Wine Staging.
configure.ac | 1 + dlls/shcore/Makefile.in | 4 +++ dlls/shcore/main.c | 43 +++++++++++++++++++++++++ dlls/shcore/shcore.spec | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/make_specfiles | 7 ++++- 5 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 dlls/shcore/Makefile.in create mode 100644 dlls/shcore/main.c create mode 100644 dlls/shcore/shcore.spec
This breaks the tests:
../../../tools/runtest -q -P wine -T ../../.. -M atl100.dll -p atl100_test.exe.so atl && touch atl.ok wine: Call from 0x7b43bc0c to unimplemented function shcore.dll.GetProcessDpiAwareness, aborting wine: Unimplemented function shcore.dll.GetProcessDpiAwareness called at address 0x330023:0x7b43bc0c (thread 0009), starting debugger... Unhandled exception: unimplemented function shcore.dll.GetProcessDpiAwareness called in 32-bit code (0x7b43bc0c). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7b43bc0c ESP:0033c9d4 EBP:0033ca48 EFLAGS:00200216( - -- I -A-P- ) EAX:7b429169 EBX:00000004 ECX:0033c9f4 EDX:0033ca78 ESI:7c201e08 EDI:07b42950 Stack dump: 0x0033c9d4: 7bcdb000 0033ca38 7bc57eac 80000100 0x0033c9e4: 00000001 00000000 7b43bc0c 00000002 0x0033c9f4: 7c201e08 7c201ebb 0033ca1c 00000000 0x0033ca04: 00000000 0033ca64 0033ca68 6d1e7789 0x0033ca14: 00000000 0033ca68 00000f3c 0000000a 0x0033ca24: 7bc57e16 0033ca50 7c200000 0033ca68 Backtrace: =>0 0x7b43bc0c RaiseException+0x8c(code=<couldn't compute location>, flags=<couldn't compute location>, nbargs=<couldn't compute location>, args=<couldn't compute location>) [/home/julliard/wine/wine/dlls/kernel32/except.c:85] in kernel32 (0x0033ca48) 1 0x7c201def __wine_spec_unimplemented_stub+0x2e(module="shcore.dll", function="GetProcessDpiAwareness") [/home/julliard/wine/wine/dlls/winecrt0/stub.c:34] in shcore (0x0033ca88) 2 0x7c201921 __wine_stub_GetProcessDpiAwareness+0x28() in shcore (0x0033cdd8) 3 0x6b6eb3e9 in xul (+0x18ab3e8) (0x0033cdd8) 4 0x7d4944ea create_document_object+0x139(is_mhtml=0, outer=<is not available>, riid=0x663980, ppv=0x33ce88) [/home/julliard/wine/wine/dlls/mshtml/htmldoc.c:5431] in mshtml (0x0033ce28) 5 0x7d517caf ClassFactory_CreateInstance+0x1e(iface=<couldn't compute location>, pUnkOuter=<couldn't compute location>, riid=<couldn't compute location>, ppvObject=<couldn't compute location>) [/home/julliard/wine/wine/dlls/mshtml/main.c:299] in mshtml (0x0033ce48) 6 0x7eb50eed CoCreateInstanceEx+0x147(rclsid=<is not available>, pUnkOuter=<is not available>, dwClsContext=<is not available>, pServerInfo=<is not available>, cmq=<is not available>, pResults=<is not available>) [/home/julliard/wine/wine/dlls/ole32/../../include/unknwn.h:222] in ole32 (0x0033ceb8) 7 0x7eb5149d CoCreateInstance+0x67(rclsid=<is not available>, pUnkOuter=<is not available>, dwClsContext=<is not available>, iid=<is not available>, ppv=<is not available>) [/home/julliard/wine/wine/dlls/ole32/compobj.c:3227] in ole32 (0x0033cf28) 8 0x7dca62e6 report_data+0x585(This=0x6638e8, bscf=<is not available>, progress=<is not available>, progress_max=0x1e) [/home/julliard/wine/wine/dlls/urlmon/binding.c:260] in urlmon (0x0033cfc8) 9 0x7dca66c2 InternetProtocolSink_ReportData+0x71(iface=<couldn't compute location>, grfBSCF=<couldn't compute location>, ulProgress=<couldn't compute location>, ulProgressMax=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/binding.c:1160] in urlmon (0x0033d008) 10 0x7dcaa33f ProtocolSinkHandler_ReportData+0x7e(iface=<couldn't compute location>, bscf=<couldn't compute location>, progress=<couldn't compute location>, progress_max=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/../../include/urlmon.h:3037] in urlmon (0x0033d878) 11 0x7dcaa733 BPInternetProtocolSink_ReportData+0x52(iface=<couldn't compute location>, grfBSCF=<couldn't compute location>, ulProgress=<couldn't compute location>, ulProgressMax=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/../../include/urlmon.h:3037] in urlmon (0x0033d8c8) 12 0x7dcad6ed FileProtocol_StartEx+0x40c(iface=<couldn't compute location>, pUri=<couldn't compute location>, pOIProtSink=<couldn't compute location>, pOIBindInfo=<couldn't compute location>, grfPI=<couldn't compute location>, dwReserved=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/../../include/urlmon.h:3037] in urlmon (0x0033db98) 13 0x7dcab8c2 BindProtocol_StartEx+0x201(iface=<couldn't compute location>, pUri=<couldn't compute location>, pOIProtSink=<couldn't compute location>, pOIBindInfo=<couldn't compute location>, grfPI=<couldn't compute location>, dwReserved=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/../../include/urlmon.h:6746] in urlmon (0x0033dc38) 14 0x7dca75ec start_binding+0x4eb(mon=<is not available>, binding_ctx=(nil), uri=0x6634e0, pbc=0x19db30, to_obj=0x1, riid=0x7dde4c10, ret=0x33dd1c) [/home/julliard/wine/wine/dlls/urlmon/../../include/urlmon.h:6746] in urlmon (0x0033dcf8) 15 0x7dca830a bind_to_object+0x29(mon=0x6635c8, uri=0x6634e0, pbc=0x19db30, riid=0x7dde4c10, ppv=0x33dde4) [/home/julliard/wine/wine/dlls/urlmon/binding.c:1630] in urlmon (0x0033dd28) 16 0x7dcc0141 URLMoniker_BindToObject+0x90(iface=<couldn't compute location>, pbc=<couldn't compute location>, pmkToLeft=<couldn't compute location>, riid=<couldn't compute location>, ppv=<couldn't compute location>) [/home/julliard/wine/wine/dlls/urlmon/umon.c:260] in urlmon (0x0033dd88) 17 0x7ddbeca0 navigate_bsc+0x2df(This=0x19d89c, bsc=<is not available>, mon=(nil)) [/home/julliard/wine/wine/dlls/ieframe/../../include/objidl.h:3216] in ieframe (0x0033df18) 18 0x7dda0ec7 process_dochost_tasks+0x36(This=0x19d89c) [/home/julliard/wine/wine/dlls/ieframe/dochost.c:63] in ieframe (0x0033df48) 19 0x7ddc1f6e shell_embedding_proc+0xbd(hwnd=<couldn't compute location>, msg=<couldn't compute location>, wParam=<couldn't compute location>, lParam=<couldn't compute location>) [/home/julliard/wine/wine/dlls/ieframe/oleobject.c:85] in ieframe (0x0033df88) 20 0x7e96864a WINPROC_wrapper+0x19() in user32 (0x0033dfc8) 21 0x7e968c97 call_window_proc+0x46(hwnd=0x60050, msg=0x700, wp=0, lp=0, result=0x33e088, arg=0x7ddc1eb0) [/home/julliard/wine/wine/dlls/user32/winproc.c:244] in user32 (0x0033e008) 22 0x7e96af1a WINPROC_call_window+0xc9(hwnd=0x60050, msg=0x700, wParam=0, lParam=0, result=0x33e088, unicode=0x1, mapping=2111551780) [/home/julliard/wine/wine/dlls/user32/winproc.c:916] in user32 (0x0033e058) 23 0x7e92ea62 call_window_proc+0x61(hwnd=0x60050, msg=0x700, wparam=0, lparam=0, unicode=0x1, same_thread=0x1, mapping=2111551780) [/home/julliard/wine/wine/dlls/user32/message.c:2223] in user32 (0x0033e0c8) 24 0x7e93548e send_message+0x19d(info=0x33e134, res_ptr=0x33e130, unicode=<is not available>) [/home/julliard/wine/wine/dlls/user32/message.c:3255] in user32 (0x0033e128) 25 0x7e9356e4 SendMessageW+0x53(hwnd=<couldn't compute location>, msg=<couldn't compute location>, wparam=<couldn't compute location>, lparam=<couldn't compute location>) [/home/julliard/wine/wine/dlls/user32/message.c:3455] in user32 (0x0033e168) 26 0x7dda0e71 push_dochost_task+0x50() in ieframe (0x0033e198) 27 0x7ddbfbb7 navigate_url+0x286(This=0x19d89c, url="C:\users\julliard\Temp\test.html", Flags=(nil), TargetFrameName=(nil), PostData=(nil), Headers=(nil)) [/home/julliard/wine/wine/dlls/ieframe/navigate.c:997] in ieframe (0x0033f238) 28 0x7ddd4eca WebBrowser_Navigate2+0x89(iface=<couldn't compute location>, URL=<couldn't compute location>, Flags=<couldn't compute location>, TargetFrameName=<couldn't compute location>, PostData=<couldn't compute location>, Headers=<couldn't compute location>) [/home/julliard/wine/wine/dlls/ieframe/webbrowser.c:787] in ieframe (0x0033f2a8) 29 0x7ec879a4 AtlAxCreateControlLicEx+0x1c3(lpszName=<couldn't compute location>, hWnd=<couldn't compute location>, pStream=<couldn't compute location>, ppUnkContainer=<couldn't compute location>, ppUnkControl=<couldn't compute location>, iidSink=<couldn't compute location>, punkSink=<couldn't compute location>, lic=<couldn't compute location>) [/home/julliard/wine/wine/dlls/atl100/../../include/exdisp.h:2013] in atl100 (0x0033f368) 30 0x7ec88845 AtlAxCreateControlEx+0x34(lpTricsData=<couldn't compute location>, hwnd=<couldn't compute location>, stream=<couldn't compute location>, container=<couldn't compute location>, control=<couldn't compute location>, iidSink=<couldn't compute location>, punkSink=<couldn't compute location>) [/home/julliard/wine/wine/dlls/atl100/../atl/atl_ax.c:1447] in atl100 (0x0033f3a8) 31 0x7ec88903 AtlAxWin_wndproc+0xa2() in atl100 (0x0033f408) 32 0x7e96864a WINPROC_wrapper+0x19() in user32 (0x0033f448) 33 0x7e968c97 call_window_proc+0x46(hwnd=0xb0040, msg=0x1, wp=0, lp=0x33f760, result=0x33f508, arg=0x7ec88860) [/home/julliard/wine/wine/dlls/user32/winproc.c:244] in user32 (0x0033f488) 34 0x7e96af1a WINPROC_call_window+0xc9(hwnd=0xb0040, msg=0x1, wParam=0, lParam=0x33f760, result=0x33f508, unicode=0x1, mapping=2124058624) [/home/julliard/wine/wine/dlls/user32/winproc.c:916] in user32 (0x0033f4d8) 35 0x7e92ea62 call_window_proc+0x61(hwnd=0xb0040, msg=0x1, wparam=0, lparam=0x33f760, unicode=0x1, same_thread=0x1, mapping=2124058624) [/home/julliard/wine/wine/dlls/user32/message.c:2223] in user32 (0x0033f548) 36 0x7e93548e send_message+0x19d(info=0x33f5b4, res_ptr=0x33f5b0, unicode=<is not available>) [/home/julliard/wine/wine/dlls/user32/message.c:3255] in user32 (0x0033f5a8) 37 0x7e9356e4 SendMessageW+0x53(hwnd=<couldn't compute location>, msg=<couldn't compute location>, wparam=<couldn't compute location>, lparam=<couldn't compute location>) [/home/julliard/wine/wine/dlls/user32/message.c:3455] in user32 (0x0033f5e8) 38 0x7e95f066 WIN_CreateWindowEx+0x6c5(cs=0x33f760, className="AtlAxWin100", module=(nil), unicode=0x1) [/home/julliard/wine/wine/dlls/user32/win.c:1641] in user32 (0x0033f748) 39 0x7e959288 CreateWindowExW+0x72(exStyle=<couldn't compute location>, className=<couldn't compute location>, windowName=<couldn't compute location>, style=<couldn't compute location>, x=<couldn't compute location>, y=<couldn't compute location>, width=<couldn't compute location>, height=<couldn't compute location>, parent=<couldn't compute location>, menu=<couldn't compute location>, instance=<couldn't compute location>, data=<couldn't compute location>) [/home/julliard/wine/wine/dlls/user32/win.c:1776] in user32 (0x0033f798) 40 0x7ecb340b test_ax_win+0xb2a() [/home/julliard/wine/wine/dlls/atl100/tests/atl.c:783] in atl100_test (0x0033fcd8) 41 0x7ecb5de1 func_atl+0x10c0() [/home/julliard/wine/wine/dlls/atl100/tests/atl.c:1091] in atl100_test (0x0033fd98) 42 0x7ecb68a6 run_test+0x125(name=<is not available>) [/home/julliard/wine/wine/dlls/atl100/tests/../../../include/wine/test.h:603] in atl100_test (0x0033fdc8) 43 0x7ecb1d45 main+0x144(argc=<is not available>, argv=<is not available>) [/home/julliard/wine/wine/dlls/atl100/tests/../../../include/wine/test.h:687] in atl100_test (0x0033fe78) 44 0x7ecb7394 __wine_spec_exe_entry+0x63(peb=<couldn't compute location>) [/home/julliard/wine/wine/dlls/winecrt0/exe_entry.c:36] in atl100_test (0x0033feb8) 45 0x7b45facc call_process_entry+0xb() in kernel32 (0x0033fed8) 46 0x7b461432 start_process+0x1b1(entry=<couldn't compute location>, peb=<couldn't compute location>) [/home/julliard/wine/wine/dlls/kernel32/process.c:1139] in kernel32 (0x0033ffd8) 47 0x7b45fada start_process_wrapper+0x9() in kernel32 (0x0033ffec) 0x7b43bc0c RaiseException+0x8c [/home/julliard/wine/wine/dlls/kernel32/except.c:85] in kernel32: addl $12,%esp
From: Sebastian Lackner sebastian@fds-team.de
Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Patch adapted from Wine Staging.
Fixes https://bugs.winehq.org/show_bug.cgi?id=44035
.../api-ms-win-shcore-scaling-l1-1-1.spec | 2 +- dlls/shcore/Makefile.in | 1 + dlls/shcore/main.c | 16 ++++++++++++++++ dlls/shcore/shcore.spec | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec b/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec index 2c4ab9e27c..81b76eb45d 100644 --- a/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec +++ b/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec @@ -1,4 +1,4 @@ -@ stub GetDpiForMonitor +@ stdcall GetDpiForMonitor(long long ptr ptr) shcore.GetDpiForMonitor @ stub GetProcessDpiAwareness @ stub GetScaleFactorForDevice @ stub GetScaleFactorForMonitor diff --git a/dlls/shcore/Makefile.in b/dlls/shcore/Makefile.in index ec2e95f526..0b172fc9a1 100644 --- a/dlls/shcore/Makefile.in +++ b/dlls/shcore/Makefile.in @@ -1,4 +1,5 @@ MODULE = shcore.dll +IMPORTS = gdi32 user32
C_SRCS = \ main.c diff --git a/dlls/shcore/main.c b/dlls/shcore/main.c index abb9b3bdb8..eceb06765d 100644 --- a/dlls/shcore/main.c +++ b/dlls/shcore/main.c @@ -21,6 +21,8 @@
#include "windef.h" #include "winbase.h" +#include "wingdi.h" +#include "winuser.h" #include "shellscalingapi.h" #include "wine/debug.h"
@@ -41,3 +43,17 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
return TRUE; } + +HRESULT WINAPI GetDpiForMonitor(HMONITOR monitor, MONITOR_DPI_TYPE type, UINT *x, UINT *y) +{ + HDC hDC; + + FIXME("(%p, %u, %p, %p): semi-stub\n", monitor, type, x, y); + + hDC = GetDC(0); + if (x) *x = GetDeviceCaps(hDC, LOGPIXELSX); + if (y) *y = GetDeviceCaps(hDC, LOGPIXELSY); + ReleaseDC(0, hDC); + + return S_OK; +} diff --git a/dlls/shcore/shcore.spec b/dlls/shcore/shcore.spec index 12a4ef3ee8..8dfb23644c 100644 --- a/dlls/shcore/shcore.spec +++ b/dlls/shcore/shcore.spec @@ -6,7 +6,7 @@ @ stub DllGetActivationFactory @ stdcall -private DllGetClassObject(ptr ptr ptr) shell32.DllGetClassObject @ stdcall GetCurrentProcessExplicitAppUserModelID(ptr) shell32.GetCurrentProcessExplicitAppUserModelID -@ stub GetDpiForMonitor +@ stdcall GetDpiForMonitor(long long ptr ptr) @ stub GetDpiForShellUIComponent @ stub GetProcessDpiAwareness @ stub GetProcessReference
From: Sebastian Lackner sebastian@fds-team.de
Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Patch adapted from Wine Staging. Fixes the next Xenia crash.
.../api-ms-win-shcore-scaling-l1-1-1.spec | 2 +- dlls/shcore/main.c | 6 ++++++ dlls/shcore/shcore.spec | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec b/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec index 81b76eb45d..93e0586f5e 100644 --- a/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec +++ b/dlls/api-ms-win-shcore-scaling-l1-1-1/api-ms-win-shcore-scaling-l1-1-1.spec @@ -5,5 +5,5 @@ @ stub RegisterScaleChangeEvent @ stub RegisterScaleChangeNotifications @ stub RevokeScaleChangeNotifications -@ stub SetProcessDpiAwareness +@ stdcall SetProcessDpiAwareness(long) shcore.SetProcessDpiAwareness @ stub UnregisterScaleChangeEvent diff --git a/dlls/shcore/main.c b/dlls/shcore/main.c index eceb06765d..bddd2b12df 100644 --- a/dlls/shcore/main.c +++ b/dlls/shcore/main.c @@ -57,3 +57,9 @@ HRESULT WINAPI GetDpiForMonitor(HMONITOR monitor, MONITOR_DPI_TYPE type, UINT *x
return S_OK; } + +HRESULT WINAPI SetProcessDpiAwareness(PROCESS_DPI_AWARENESS value) +{ + FIXME("(%u): stub\n", value); + return E_NOTIMPL; +} diff --git a/dlls/shcore/shcore.spec b/dlls/shcore/shcore.spec index 8dfb23644c..4d6e84522a 100644 --- a/dlls/shcore/shcore.spec +++ b/dlls/shcore/shcore.spec @@ -78,6 +78,6 @@ @ stdcall SHUnicodeToAnsi(wstr ptr ptr) shlwapi.SHUnicodeToAnsi @ stdcall SHUnicodeToUnicode(wstr ptr long) shlwapi.SHUnicodeToUnicode @ stdcall SetCurrentProcessExplicitAppUserModelID(wstr) shell32.SetCurrentProcessExplicitAppUserModelID -@ stub SetProcessDpiAwareness +@ stdcall SetProcessDpiAwareness(long) @ stub SetProcessReference @ stub UnregisterScaleChangeEvent
Signed-off-by: Alex Henrie alexhenrie24@gmail.com --- Fixes the next Xenia crash.
dlls/ntdll/ntdll.spec | 1 + dlls/ntdll/rtl.c | 11 +++++++++++ 2 files changed, 12 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 035fad2058..e385490284 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -425,6 +425,7 @@ @ stdcall RtlAddAuditAccessAceEx(ptr long long long ptr long long) @ stdcall RtlAddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long) # @ stub RtlAddCompoundAce +@ stdcall RtlAddGrowableFunctionTable(ptr ptr long long ptr ptr) @ stdcall RtlAddMandatoryAce(ptr long long long long ptr) # @ stub RtlAddRange @ cdecl -arch=arm,x86_64 RtlAddFunctionTable(ptr long long) diff --git a/dlls/ntdll/rtl.c b/dlls/ntdll/rtl.c index 09a9c921bb..3444cdc684 100644 --- a/dlls/ntdll/rtl.c +++ b/dlls/ntdll/rtl.c @@ -1672,3 +1672,14 @@ RTL_UNLOAD_EVENT_TRACE * WINAPI RtlGetUnloadEventTrace(void) FIXME("stub!\n"); return NULL; } + +/********************************************************************* + * RtlAddGrowableFunctionTable [NTDLL.@] + */ +NTSTATUS WINAPI RtlAddGrowableFunctionTable(void *dynamic_table, PRUNTIME_FUNCTION function_table, DWORD entry_count, + DWORD max_entry_count, ULONG *range_base, ULONG *range_end) +{ + FIXME("(%p %p %u %u %p %p): stub\n", + dynamic_table, function_table, entry_count, max_entry_count, range_base, range_end); + return STATUS_NOT_IMPLEMENTED; +}