From 81bc5d825cd87e07fca055ecabc9a6d0d81647b3 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Mon, 18 Aug 2025 08:18:55 +0200 Subject: [PATCH] [winpr,library] implement GetModuleHandle[AW] --- winpr/libwinpr/library/library.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/winpr/libwinpr/library/library.c b/winpr/libwinpr/library/library.c index 0714696df..31147c87d 100644 --- a/winpr/libwinpr/library/library.c +++ b/winpr/libwinpr/library/library.c @@ -109,14 +109,14 @@ BOOL SetDefaultDllDirectories(WINPR_ATTR_UNUSED DWORD DirectoryFlags) HMODULE LoadLibraryA(LPCSTR lpLibFileName) { + if (!lpLibFileName) + return NULL; + #if defined(_UWP) int status; HMODULE hModule = NULL; WCHAR* filenameW = NULL; - if (!lpLibFileName) - return NULL; - filenameW = ConvertUtf8ToWCharAlloc(lpLibFileName, NULL); if (filenameW) return NULL; @@ -125,8 +125,7 @@ HMODULE LoadLibraryA(LPCSTR lpLibFileName) free(filenameW); return hModule; #else - HMODULE library = NULL; - library = dlopen(lpLibFileName, RTLD_LOCAL | RTLD_LAZY); + HMODULE library = dlopen(lpLibFileName, RTLD_LOCAL | RTLD_LAZY); if (!library) { @@ -208,20 +207,19 @@ BOOL FreeLibrary(HMODULE hLibModule) return TRUE; } -HMODULE GetModuleHandleA(WINPR_ATTR_UNUSED LPCSTR lpModuleName) +HMODULE GetModuleHandleA(LPCSTR lpModuleName) { - /* TODO: Implement */ - WLog_ERR(TAG, "not implemented"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return NULL; + return dlopen(lpModuleName, RTLD_NOLOAD | RTLD_LOCAL | RTLD_LAZY); } -HMODULE GetModuleHandleW(WINPR_ATTR_UNUSED LPCWSTR lpModuleName) +HMODULE GetModuleHandleW(LPCWSTR lpModuleName) { - /* TODO: Implement */ - WLog_ERR(TAG, "not implemented"); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return NULL; + char* name = NULL; + if (lpModuleName) + name = ConvertWCharToUtf8Alloc(lpModuleName, NULL); + HANDLE hdl = GetModuleHandleA(name); + free(name); + return hdl; } /**