eEsifError EsifAppStart(EsifAppPtr appPtr) { ESIF_TRACE_ENTRY_INFO(); eEsifError rc = ESIF_OK; GetIfaceFuncPtr iface_func_ptr = NULL; esif_string iface_func_name = GET_APPLICATION_INTERFACE_FUNCTION; char libPath[ESIF_LIBPATH_LEN]; ESIF_TRACE_DEBUG("name=%s\n", appPtr->fLibNamePtr); esif_build_path(libPath, ESIF_LIBPATH_LEN, ESIF_PATHTYPE_DLL, appPtr->fLibNamePtr, ESIF_LIB_EXT); appPtr->fLibHandle = esif_ccb_library_load(libPath); if (NULL == appPtr->fLibHandle || NULL == appPtr->fLibHandle->handle) { rc = esif_ccb_library_error(appPtr->fLibHandle); ESIF_TRACE_DEBUG("esif_ccb_library_load() %s failed [%s (%d)]: %s\n", libPath, esif_rc_str(rc), rc, esif_ccb_library_errormsg(appPtr->fLibHandle)); goto exit; } ESIF_TRACE_DEBUG("esif_ccb_library_load() %s completed.\n", libPath); iface_func_ptr = (GetIfaceFuncPtr)esif_ccb_library_get_func(appPtr->fLibHandle, (char*)iface_func_name); if (NULL == iface_func_ptr) { rc = esif_ccb_library_error(appPtr->fLibHandle); ESIF_TRACE_DEBUG("esif_ccb_library_get_func() %s failed [%s (%d)]: %s\n", iface_func_name, esif_rc_str(rc), rc, esif_ccb_library_errormsg(appPtr->fLibHandle)); goto exit; } ESIF_TRACE_DEBUG("esif_ccb_library_get_func() %s completed.\n", iface_func_name); rc = AppCreate(appPtr, iface_func_ptr); if (ESIF_OK != rc) { ESIF_TRACE_DEBUG("AppCreate failed.\n"); goto exit; } ESIF_TRACE_DEBUG("AppCreate completed.\n"); rc = EsifApp_RegisterParticipantsWithApp(appPtr); if (ESIF_OK != rc) { ESIF_TRACE_DEBUG("EsifApp_RegisterParticipantsWithApp failed.\n"); goto exit; } ESIF_TRACE_DEBUG("EsifApp_RegisterParticipantsWithApp completed.\n"); exit: if (ESIF_OK != rc) { esif_ccb_library_unload(appPtr->fLibHandle); appPtr->fLibHandle = NULL; } ESIF_TRACE_EXIT_INFO_W_STATUS(rc); return rc; }
static eEsifError EsifActMgr_LoadAction( EsifActMgrEntryPtr entryPtr, GetIfaceFuncPtr *getIfacePtr ) { eEsifError rc = ESIF_OK; GetIfaceFuncPtr ifaceFuncPtr = NULL; EsifString ifaceFuncName = "GetActionInterface"; char libPath[ESIF_LIBPATH_LEN]; ESIF_ASSERT(entryPtr != NULL); ESIF_ASSERT(getIfacePtr != NULL); ESIF_TRACE_DEBUG("Name=%s\n", entryPtr->libName); esif_build_path(libPath, sizeof(libPath), ESIF_PATHTYPE_DLL, entryPtr->libName, ESIF_LIB_EXT); entryPtr->lib = esif_ccb_library_load(libPath); if (NULL == entryPtr->lib || NULL == entryPtr->lib->handle) { rc = esif_ccb_library_error(entryPtr->lib); ESIF_TRACE_ERROR("esif_ccb_library_load() %s failed [%s (%d)]: %s\n", libPath, esif_rc_str(rc), rc, esif_ccb_library_errormsg(entryPtr->lib)); goto exit; } ESIF_TRACE_DEBUG("esif_ccb_library_load() %s completed.\n", libPath); ifaceFuncPtr = (GetIfaceFuncPtr)esif_ccb_library_get_func(entryPtr->lib, (EsifString)ifaceFuncName); if (NULL == ifaceFuncPtr) { rc = esif_ccb_library_error(entryPtr->lib); ESIF_TRACE_ERROR("esif_ccb_library_get_func() %s failed [%s (%d)]: %s\n", libPath, esif_rc_str(rc), rc, esif_ccb_library_errormsg(entryPtr->lib)); goto exit; } ESIF_TRACE_DEBUG("esif_ccb_library_get_func() %s completed.\n", ifaceFuncName); *getIfacePtr = ifaceFuncPtr; exit: return rc; }