diff options
Diffstat (limited to 'src/windows/include/loadfuncs.h')
| -rw-r--r-- | src/windows/include/loadfuncs.h | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/src/windows/include/loadfuncs.h b/src/windows/include/loadfuncs.h new file mode 100644 index 000000000000..7aef62d21cd0 --- /dev/null +++ b/src/windows/include/loadfuncs.h @@ -0,0 +1,41 @@ +#ifndef __LOADFUNCS_H__ +#define __LOADFUNCS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <windows.h> + +typedef struct _FUNC_INFO { +    void** func_ptr_var; +    char* func_name; +} FUNC_INFO; + +#define DECL_FUNC_PTR(x) FP_##x p##x +#define MAKE_FUNC_INFO(x) { (void**) &p##x, #x } +#define END_FUNC_INFO { 0, 0 } +#define TYPEDEF_FUNC(ret, call, name, args) typedef ret (call *FP_##name) args + +void +UnloadFuncs( +    FUNC_INFO fi[], +    HINSTANCE h +    ); + +int +LoadFuncs( +    const char* dll_name, +    FUNC_INFO fi[], +    HINSTANCE* ph,  // [out, optional] - DLL handle +    int* pindex,    // [out, optional] - index of last func loaded (-1 if none) +    int cleanup,    // cleanup function pointers and unload on error +    int go_on,      // continue loading even if some functions cannot be loaded +    int silent      // do not pop-up a system dialog if DLL cannot be loaded +    ); + +#ifdef __cplusplus +} +#endif + +#endif /* __LOADFUNCS_H__ */ | 
