]> sourceware.org Git - newlib-cygwin.git/blobdiff - winsup/utils/module_info.cc
Cygwin: add 3.2.1 release file and add fixes up to this point
[newlib-cygwin.git] / winsup / utils / module_info.cc
index 1522b50b3246bb958e6d9affe02515250e40282f..bf3a18bf35c134f1d569eb9104870ed051e0a17c 100644 (file)
@@ -1,7 +1,5 @@
 /* module_info.cc
 
-   Copyright 1999,2000,2001,2010 Red Hat, Inc.
-
    Written by Egor Duda <deo@logos-m.ru>
 
 This file is part of Cygwin.
@@ -15,25 +13,11 @@ 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. */
 
 char *
-psapi_get_module_name (HANDLE hProcess, DWORD BaseAddress)
+psapi_get_module_name (HANDLE hProcess, LPVOID BaseAddress)
 {
   DWORD len;
   MODULEINFO mi;
@@ -45,41 +29,14 @@ psapi_get_module_name (HANDLE hProcess, DWORD 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,22 +45,20 @@ psapi_get_module_name (HANDLE hProcess, DWORD 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);
          goto failed;
        }
 
-      if ((DWORD) (mi.lpBaseOfDll) == BaseAddress)
+      if (mi.lpBaseOfDll == BaseAddress)
        {
          free (DllHandle);
          return strdup (name_buf);
This page took 0.025231 seconds and 5 git commands to generate.