diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dlfcn.c | 9 |
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 ) |
