From: Paul Gofman <pgofman@codeweavers.com> --- dlls/kernelbase/loader.c | 2 +- dlls/ntdll/loader.c | 5 ++++- dlls/ntdll/ntdll.spec | 2 +- include/winternl.h | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dlls/kernelbase/loader.c b/dlls/kernelbase/loader.c index f6347c1cc9c..8e6a62512e1 100644 --- a/dlls/kernelbase/loader.c +++ b/dlls/kernelbase/loader.c @@ -168,7 +168,7 @@ static HMODULE load_library( const UNICODE_STRING *libname, DWORD flags ) } else { - status = LdrLoadDll( load_path, flags, libname, &module ); + status = LdrLoadDll( load_path, &flags, libname, &module ); if (!set_ntstatus( status )) { module = 0; diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index c5c34935efd..2e87b245276 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -3440,13 +3440,16 @@ NTSTATUS CDECL wine_server_handle_to_fd( HANDLE handle, unsigned int access, int /****************************************************************** * LdrLoadDll (NTDLL.@) */ -NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD flags, +NTSTATUS WINAPI DECLSPEC_HOTPATCH LdrLoadDll(LPCWSTR path_name, DWORD *load_flags, const UNICODE_STRING *libname, HMODULE* hModule) { WINE_MODREF *wm; NTSTATUS nts; + ULONG flags = 0; WCHAR *dllname = append_dll_ext( libname->Buffer ); + if (load_flags) flags = *load_flags; + RtlEnterCriticalSection( &loader_section ); nts = load_dll( path_name, dllname ? dllname : libname->Buffer, flags, &wm, FALSE ); diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 46cd1dccab5..c8cd2d34595 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -101,7 +101,7 @@ @ stub LdrInitShimEngineDynamic @ stdcall LdrInitializeThunk(ptr long long long) @ stub LdrLoadAlternateResourceModule -@ stdcall LdrLoadDll(wstr long ptr ptr) +@ stdcall LdrLoadDll(wstr ptr ptr ptr) @ stdcall LdrLockLoaderLock(long ptr ptr) @ stdcall LdrProcessRelocationBlock(ptr long ptr long) @ stdcall LdrQueryImageFileExecutionOptions(ptr wstr long ptr long ptr) diff --git a/include/winternl.h b/include/winternl.h index 80c295f0dce..0b981c24062 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -4540,7 +4540,7 @@ NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, NTSYSAPI NTSTATUS WINAPI LdrGetDllHandleEx(ULONG, LPCWSTR, ULONG *, const UNICODE_STRING*, HMODULE*); NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*); NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**); -NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*); +NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD *, const UNICODE_STRING*, HMODULE*); NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*); IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR); NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9888