aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2023-12-29 23:20:56 +0100
committerSilvio <silvio.traversaro@iit.it>2025-04-28 14:49:51 +0200
commitb5004cdcc136421217e3afc9832fbce3445ddddb (patch)
tree6b92f732240d20dabcb1eb3ef34bb105cca34a9b /src
parentc815879efea297cad9d9fbf76baf972d49dd97fa (diff)
downloaddlfcn-win32-b5004cdcc136421217e3afc9832fbce3445ddddb.tar.gz
dlfcn-win32-b5004cdcc136421217e3afc9832fbce3445ddddb.tar.bz2
dlfcn-win32-b5004cdcc136421217e3afc9832fbce3445ddddb.zip
Store kernel32.dll handle into kernel32 variable
Diffstat (limited to 'src')
-rw-r--r--src/dlfcn.c9
1 files changed, 5 insertions, 4 deletions
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,
314 static BOOL (WINAPI *EnumProcessModulesPtr)(HANDLE, HMODULE *, DWORD, LPDWORD) = NULL; 314 static BOOL (WINAPI *EnumProcessModulesPtr)(HANDLE, HMODULE *, DWORD, LPDWORD) = NULL;
315 static BOOL failed = FALSE; 315 static BOOL failed = FALSE;
316 UINT uMode; 316 UINT uMode;
317 HMODULE kernel32;
317 HMODULE psapi; 318 HMODULE psapi;
318 319
319 if( failed ) 320 if( failed )
@@ -322,9 +323,9 @@ static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb,
322 if( EnumProcessModulesPtr == NULL ) 323 if( EnumProcessModulesPtr == NULL )
323 { 324 {
324 /* Windows 7 and newer versions have K32EnumProcessModules in Kernel32.dll which is always pre-loaded */ 325 /* Windows 7 and newer versions have K32EnumProcessModules in Kernel32.dll which is always pre-loaded */
325 psapi = GetModuleHandleA( "Kernel32.dll" ); 326 kernel32 = GetModuleHandleA( "Kernel32.dll" );
326 if( psapi != NULL ) 327 if( kernel32 != NULL )
327 EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( psapi, "K32EnumProcessModules" ); 328 EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( kernel32, "K32EnumProcessModules" );
328 329
329 /* Windows Vista and older version have EnumProcessModules in Psapi.dll which needs to be loaded */ 330 /* Windows Vista and older version have EnumProcessModules in Psapi.dll which needs to be loaded */
330 if( EnumProcessModulesPtr == NULL ) 331 if( EnumProcessModulesPtr == NULL )
@@ -332,13 +333,13 @@ static BOOL MyEnumProcessModules( HANDLE hProcess, HMODULE *lphModule, DWORD cb,
332 /* Do not let Windows display the critical-error-handler message box */ 333 /* Do not let Windows display the critical-error-handler message box */
333 uMode = MySetErrorMode( SEM_FAILCRITICALERRORS ); 334 uMode = MySetErrorMode( SEM_FAILCRITICALERRORS );
334 psapi = LoadLibraryA( "Psapi.dll" ); 335 psapi = LoadLibraryA( "Psapi.dll" );
336 MySetErrorMode( uMode );
335 if( psapi != NULL ) 337 if( psapi != NULL )
336 { 338 {
337 EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( psapi, "EnumProcessModules" ); 339 EnumProcessModulesPtr = (BOOL (WINAPI *)(HANDLE, HMODULE *, DWORD, LPDWORD)) (LPVOID) GetProcAddress( psapi, "EnumProcessModules" );
338 if( EnumProcessModulesPtr == NULL ) 340 if( EnumProcessModulesPtr == NULL )
339 FreeLibrary( psapi ); 341 FreeLibrary( psapi );
340 } 342 }
341 MySetErrorMode( uMode );
342 } 343 }
343 344
344 if( EnumProcessModulesPtr == NULL ) 345 if( EnumProcessModulesPtr == NULL )