diff options
Diffstat (limited to 'winsup/utils/module_info.cc')
-rw-r--r-- | winsup/utils/module_info.cc | 51 |
1 files changed, 4 insertions, 47 deletions
diff --git a/winsup/utils/module_info.cc b/winsup/utils/module_info.cc index 12e74de39..1437da421 100644 --- a/winsup/utils/module_info.cc +++ b/winsup/utils/module_info.cc @@ -15,20 +15,6 @@ details. */ #include <psapi.h> #include "loadlib.h" -static int psapi_loaded = 0; -static HMODULE psapi_module_handle = NULL; - -typedef BOOL WINAPI (tf_EnumProcessModules) (HANDLE, HMODULE *, DWORD, - LPDWORD); -typedef BOOL WINAPI (tf_GetModuleInformation) (HANDLE, HMODULE, LPMODULEINFO, - DWORD); -typedef DWORD WINAPI (tf_GetModuleFileNameExA) (HANDLE, HMODULE, LPSTR, - DWORD); - -static tf_EnumProcessModules *psapi_EnumProcessModules = NULL; -static tf_GetModuleInformation *psapi_GetModuleInformation = NULL; -static tf_GetModuleFileNameExA *psapi_GetModuleFileNameExA = NULL; - /* Returns full name of Dll, which is loaded by hProcess at BaseAddress. Uses psapi.dll. */ @@ -45,41 +31,14 @@ psapi_get_module_name (HANDLE hProcess, LPVOID BaseAddress) char name_buf[MAX_PATH + 1]; - if (!psapi_loaded || - psapi_EnumProcessModules == NULL || - psapi_GetModuleInformation == NULL || - psapi_GetModuleFileNameExA == NULL) - { - if (psapi_loaded) - goto failed; - psapi_loaded = 1; - psapi_module_handle = LoadLibrary ("psapi.dll"); - if (!psapi_module_handle) - goto failed; - psapi_EnumProcessModules = - (tf_EnumProcessModules *) GetProcAddress (psapi_module_handle, - "EnumProcessModules"); - psapi_GetModuleInformation = - (tf_GetModuleInformation *) GetProcAddress (psapi_module_handle, - "GetModuleInformation"); - psapi_GetModuleFileNameExA = - (tf_GetModuleFileNameExA *) GetProcAddress (psapi_module_handle, - "GetModuleFileNameExA"); - if (psapi_EnumProcessModules == NULL - || psapi_GetModuleInformation == NULL - || psapi_GetModuleFileNameExA == NULL) - goto failed; - } - - ok = (*psapi_EnumProcessModules) (hProcess, - DllHandle, sizeof (HMODULE), &cbNeeded); + ok = EnumProcessModules (hProcess, DllHandle, sizeof (HMODULE), &cbNeeded); if (!ok || !cbNeeded) goto failed; DllHandle = (HMODULE *) malloc (cbNeeded); if (!DllHandle) goto failed; - ok = (*psapi_EnumProcessModules) (hProcess, DllHandle, cbNeeded, &cbNeeded); + ok = EnumProcessModules (hProcess, DllHandle, cbNeeded, &cbNeeded); if (!ok) { free (DllHandle); @@ -88,15 +47,13 @@ psapi_get_module_name (HANDLE hProcess, LPVOID BaseAddress) for (i = 0; i < cbNeeded / sizeof (HMODULE); i++) { - if (!(*psapi_GetModuleInformation) (hProcess, - DllHandle[i], &mi, sizeof (mi))) + if (!GetModuleInformation (hProcess, DllHandle[i], &mi, sizeof (mi))) { free (DllHandle); goto failed; } - len = (*psapi_GetModuleFileNameExA) (hProcess, - DllHandle[i], name_buf, MAX_PATH); + len = GetModuleFileNameExA (hProcess, DllHandle[i], name_buf, MAX_PATH); if (len == 0) { free (DllHandle); |