/////////////////////////////////////////////////////////////////////////////////////// // Logging functions void CServiceModule::LogEvent(LPCTSTR pFormat, ...) { TCHAR chMsg[256]; HANDLE hEventSource; LPTSTR lpszStrings[1]; va_list pArg; va_start(pArg, pFormat); _vstprintf(chMsg, pFormat, pArg); va_end(pArg); lpszStrings[0] = chMsg; if (m_bService) { /* Get a handle to use with ReportEvent(). */ hEventSource = RegisterEventSource(NULL, m_szServiceName); if (hEventSource != NULL) { /* Write to event log. */ ReportEvent(hEventSource, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (LPCTSTR*) &lpszStrings[0], NULL); DeregisterEventSource(hEventSource); } } else { // As we are not running as a service, just write the error to the console. _putts(chMsg); } } /*BOOL GetParams(TCHAR *FileName, PPARAMSTRUCT dbinfo) { IDebugClient *DebugClient; PDEBUG_CONTROL DebugControl; HRESULT Hr; ULONG Code; ULONG64 Arg1; ULONG64 Arg2; ULONG64 Arg3; ULONG64 Arg4; ULONG PlatformId; ULONG Major; ULONG Minor; TCHAR ServicePackString[255]; ULONG ServicePackStringSize = 255; ULONG ServicePackStringUsed; ULONG ServicePackNumber; TCHAR BuildString[255]; ULONG BuildStringSize = 255; ULONG BuildStringUsed; if ((Hr = DebugCreate(__uuidof(IDebugClient), (void **)&DebugClient)) == S_OK) { if (DebugClient->QueryInterface(__uuidof(IDebugControl), (void **)&DebugControl) == S_OK) { if (DebugClient->OpenDumpFile(FileName) == S_OK) { DebugControl->WaitForEvent(DEBUG_WAIT_DEFAULT, INFINITE); Hr = DebugControl->GetSystemVersion(&PlatformId,&Major,&Minor,ServicePackString,ServicePackStringSize, &ServicePackStringUsed,&ServicePackNumber,BuildString,BuildStringSize,&BuildStringUsed); Hr = DebugControl->ReadBugCheckData(&Code, &Arg1, &Arg2, &Arg3, &Arg4); sprintf(dbinfo->StopCode,"%08x",Code); sprintf(dbinfo->P1,"0x%08x",(ULONG) Arg1); sprintf(dbinfo->P2,"0x%08x",(ULONG) Arg2); sprintf(dbinfo->P3,"0x%08x",(ULONG) Arg3); sprintf(dbinfo->P4,"0x%08x",(ULONG) Arg4); dbinfo->BuildNum = Minor; _ultoa(Minor,dbinfo->BuildNumber,10); DebugClient->EndSession(DEBUG_END_ACTIVE_TERMINATE); DebugControl->Release(); } else return FALSE; DebugClient->Release(); } else return FALSE; } else { return FALSE; } //return Hr; return TRUE; } */