WIN32: osdFindSymbol() use psapi

This commit is contained in:
Michael Davidsaver
2020-03-31 22:24:31 -07:00
parent 1492baace9
commit db2cd68ce3
3 changed files with 11 additions and 6 deletions

View File

@@ -21,4 +21,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
GNU_LDLIBS_YES =
# Link with system libraries
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp

View File

@@ -32,4 +32,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
GNU_LDLIBS_YES =
# Link with system libraries
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp

View File

@@ -5,10 +5,15 @@
\*************************************************************************/
/* osi/os/WIN32/osdFindSymbol.c */
/* avoid need to link against psapi.dll
* requires windows 7 or later
/* Avoid need to link against psapi.dll. requires windows 7 or later.
* MinGW doesn't provide wrappers until 6.0, so fallback to psapi.dll
*/
#define NTDDI_VERSION NTDDI_WIN7
#ifdef _MSC_VER
# define NTDDI_VERSION NTDDI_WIN7
# define epicsEnumProcessModules K32EnumProcessModules
#else
# define epicsEnumProcessModules EnumProcessModules
#endif
#include <windows.h>
#include <psapi.h>
@@ -72,7 +77,7 @@ epicsShareFunc void * epicsShareAPI epicsFindSymbol(const char *name)
/* As a handle returned by LoadLibrary() isn't available to us,
* try all loaded modules in arbitrary order.
*/
if(K32EnumProcessModules(GetCurrentProcess(), dlls, sizeof(dlls), &ndlls)) {
if(epicsEnumProcessModules(GetCurrentProcess(), dlls, sizeof(dlls), &ndlls)) {
for(i=0; !ret && i<ndlls; i++) {
ret = GetProcAddress(dlls[i], name);
}