skyrope-mit-merge-hell-20040226
[openafs.git] / src / WINNT / kfw / inc / loadfuncs / loadfuncs.h
1 #ifndef __LOADFUNCS_H__
2 #define __LOADFUNCS_H__
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include <windows.h>
9
10 typedef struct _FUNC_INFO {
11     void** func_ptr_var;
12     char* func_name;
13 } FUNC_INFO;
14
15 #define DECL_FUNC_PTR(x) FP_##x p##x
16 #define MAKE_FUNC_INFO(x) { (void**) &p##x, #x }
17 #define END_FUNC_INFO { 0, 0 }
18 #define TYPEDEF_FUNC(ret, call, name, args) typedef ret (call *FP_##name) args
19
20 void
21 UnloadFuncs(
22     FUNC_INFO fi[], 
23     HINSTANCE h
24     );
25
26 int
27 LoadFuncs(
28     const char* dll_name, 
29     FUNC_INFO fi[], 
30     HINSTANCE* ph,  // [out, optional] - DLL handle
31     int* pindex,    // [out, optional] - index of last func loaded (-1 if none)
32     int cleanup,    // cleanup function pointers and unload on error
33     int go_on,      // continue loading even if some functions cannot be loaded
34     int silent      // do not pop-up a system dialog if DLL cannot be loaded
35     );
36
37 #ifdef __cplusplus
38 }
39 #endif
40
41 #endif /* __LOADFUNCS_H__ */