From b5004cdcc136421217e3afc9832fbce3445ddddb Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Fri, 29 Dec 2023 23:20:56 +0100 Subject: Store kernel32.dll handle into kernel32 variable --- src/dlfcn.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dlfcn.c b/src/dlfcn.c index 522eed0..4b5719f 100644 --- a/src/dlfcn.c +++ b/src/dlfcn.c @@ -314,6 +314,7 @@ static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb, static BOOL (WINAPI *EnumProcessModulesPtr)(HANDLE, HMODULE *, DWORD, LPDWORD) = NULL; static BOOL failed = FALSE; UINT uMode; + HMODULE kernel32; HMODULE psapi; if( failed ) @@ -322,9 +323,9 @@ static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb, if( EnumProcessModulesPtr == NULL ) { /* Windows 7 and newer versions have K32EnumProcessModules in Kernel32.dll which is always pre-loaded */ - psapi = GetModuleHandleA( "Kernel32.dll" ); - if( psapi != NULL ) - EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( psapi, "K32EnumProcessModules" ); + kernel32 = GetModuleHandleA( "Kernel32.dll" ); + if( kernel32 != NULL ) + EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( kernel32, "K32EnumProcessModules" ); /* Windows Vista and older version have EnumProcessModules in Psapi.dll which needs to be loaded */ if( EnumProcessModulesPtr == NULL ) @@ -332,13 +333,13 @@ static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb, /* Do not let Windows display the critical-error-handler message box */ uMode = MySetErrorMode( SEM_FAILCRITICALERRORS ); psapi = LoadLibraryA( "Psapi.dll" ); + MySetErrorMode( uMode ); if( psapi != NULL ) { EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( psapi, "EnumProcessModules" ); if( EnumProcessModulesPtr == NULL ) FreeLibrary( psapi ); } - MySetErrorMode( uMode ); } if( EnumProcessModulesPtr == NULL ) -- cgit v1.2.3-55-g6feb