The first step to using the RPC Broker 32-bit DLL in a C program is to load the DLL and get the process addresses for the exported functions.
To initialize access to the Broker DLL functions:
HINSTANCE hLib = LoadLibrary("bapi32.dll"); if((unsigned)hLib<=HINSTANCE_ERROR) { /* add your error handler for case where library fails to load */ return 1; }
RPCBCreate = (void *(__stdcall*)()) GetProcAddress(hLib, "RpcbCreate"); RPCBFree = (void (__stdcall*)(void *)) GetProcAddress(hLib, "RpcbFree"); RPCBCall = (char *(__stdcall*)(void *, char *)) GetProcAddress(hLib, "RpcbCall"); RPCBCreateContext = (bool (__stdcall*)(void *, char *)) GetProcAddress(hLib, "RpcbCreateContext"); RPCBMultSet = (void (__stdcall*)(void *, int, char *, char *)) GetProcAddress(hLib, "RpcbMultSet"); RPCBParamGet = (void (__stdcall*)(void *, int, int, char *)) GetProcAddress(hLib, "RpcbParamGet"); RPCBParamSet = (void (__stdcall*)(void *, int, int, char *)) GetProcAddress(hLib, "RpcbParamSet"); RPCBPropGet = (void (__stdcall*)(void *, char *, char *)) GetProcAddress(hLib, "RpcbPropGet"); RPCBPropSet =(void (__stdcall*)(void *, char *, char *)) GetProcAddress(hLib, "RpcbPropSet"); // // GetProcAddress returns null on failure // if( RPCBCreate == NULL || RPCBFree == NULL || RPCBCall == NULL || RPCBCreateContext == NULL || RPCBMultSet == NULL || RPCBParamGet == NULL || RPCBParamSet == NULL || RPCBPropGet == NULL || RPCBPropSet == NULL) { /* add your error handler for case where functions are not found */ return 1; }
Now you can use functions exported in the DLL.