BOOST_LOG_EXPORT void basic_event_log_backend< CharT >::construct( boost::log::aux::universal_path const& message_file_name, string_type const& target, string_type const& log_name, string_type const& source_name, event_log::registration_mode reg_mode) { if (reg_mode != event_log::never) { aux::registry_params< char_type > reg_params; string_type file_name; log::aux::code_convert(message_file_name.string(), file_name); reg_params.event_message_file = file_name; reg_params.types_supported = DWORD( EVENTLOG_SUCCESS | EVENTLOG_INFORMATION_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_ERROR_TYPE); aux::init_event_log_registry(log_name, source_name, reg_mode == event_log::forced, reg_params); } std::auto_ptr< implementation > p(new implementation()); const char_type* target_unc = NULL; if (!target.empty()) target_unc = target.c_str(); HANDLE hSource = register_event_source(target_unc, source_name.c_str()); if (!hSource) BOOST_LOG_THROW_DESCR(system_error, "Could not register event source"); p->m_SourceHandle = hSource; m_pImpl = p.release(); }
static void xopenlog(BIO* bp, char* name, int level) { if ( !register_event_source ) { HANDLE advapi; if ( !(advapi = GetModuleHandle("advapi32")) ) return; register_event_source = (HANDLE (WINAPI *)())DL_PROC_X(advapi, "RegisterEventSource" ); deregister_event_source = (BOOL (WINAPI *)())DL_PROC(advapi, "DeregisterEventSource"); report_event = (BOOL (WINAPI *)())DL_PROC_X(advapi, "ReportEvent" ); if ( !(register_event_source && deregister_event_source && report_event) ) { register_event_source = NULL; deregister_event_source = NULL; report_event = NULL; return; } } bp->ptr= (char *)register_event_source(NULL, name); }
static int install(void) { HANDLE hSCMlib; SC_HANDLE hSCManager; SC_HANDLE hService; char path[MAX_PATH+1]; char cmdline[MAX_PATH+1]; printf("Installing service: %-40s ... ", TITLE); hSCMlib = LoadLibrary("ADVAPI32.DLL"); if(GetModuleFileName(NULL,path,sizeof(path))==0) { fprintf(stderr,"\n!ERROR %d getting module file name\n",GetLastError()); return(-1); } hSCManager = OpenSCManager( NULL, // machine (NULL == local) NULL, // database (NULL == default) SC_MANAGER_ALL_ACCESS // access required ); if(hSCManager==NULL) { fprintf(stderr,"\n!ERROR %d opening SC manager\n",GetLastError()); return(-1); } /* Install new service */ wsprintf(cmdline,"%s service", path); hService = CreateService( hSCManager, // SCManager database NAME, // name of service TITLE, // name to display SERVICE_ALL_ACCESS, // desired access SERVICE_WIN32_OWN_PROCESS, // service type SERVICE_AUTO_START, // start type (auto or manual) SERVICE_ERROR_NORMAL, // error control type cmdline, // service's binary NULL, // no load ordering group NULL, // no tag identifier "", // dependencies NULL, // LocalSystem account NULL); // no password if(hService==NULL) fprintf(stderr,"\n!ERROR %d creating service\n",GetLastError()); else { describe_service(hSCMlib, hService, DESCRIPTION); CloseServiceHandle(hService); printf("Successful\n"); register_event_source(TITLE,path); } if(hSCMlib!=NULL) FreeLibrary(hSCMlib); CloseServiceHandle(hSCManager); return(0); }