1 /*-------------------------------------------------------------------------
4 * dynamic loader for Windows
6 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
11 * src/port/win32dlopen.c
13 *-------------------------------------------------------------------------
18 static char last_dyn_error
[512];
23 DWORD err
= GetLastError();
25 if (FormatMessage(FORMAT_MESSAGE_IGNORE_INSERTS
|
26 FORMAT_MESSAGE_FROM_SYSTEM
,
29 MAKELANGID(LANG_ENGLISH
, SUBLANG_DEFAULT
),
31 sizeof(last_dyn_error
) - 1,
34 snprintf(last_dyn_error
, sizeof(last_dyn_error
) - 1,
35 "unknown error %lu", err
);
42 if (last_dyn_error
[0])
43 return last_dyn_error
;
51 if (!FreeLibrary((HMODULE
) handle
))
56 last_dyn_error
[0] = 0;
61 dlsym(void *handle
, const char *symbol
)
65 ptr
= GetProcAddress((HMODULE
) handle
, symbol
);
71 last_dyn_error
[0] = 0;
76 dlopen(const char *file
, int mode
)
81 /* Disable popup error messages when loading DLLs */
82 prevmode
= SetErrorMode(SEM_FAILCRITICALERRORS
| SEM_NOOPENFILEERRORBOX
);
83 h
= LoadLibrary(file
);
84 SetErrorMode(prevmode
);
91 last_dyn_error
[0] = 0;