return dwError;
}
}
+ else
+ {
+ if (dwProcessId != Service->lpImage->dwProcessId)
+ {
+/*
+ LPWSTR Strings[3]
+
+ ScmLogError(EVENT_SERVICE_DIFFERENT_PID_CONNECTED,
+ 3,
+ lpStrings);
+*/
+ }
+ }
DPRINT("ScmWaitForServiceConnect() done\n");
{
PSERVICE_GROUP Group = Service->lpGroup;
DWORD dwError = ERROR_SUCCESS;
- LPCWSTR ErrorLogStrings[2];
+ LPCWSTR lpErrorStrings[2];
WCHAR szErrorBuffer[32];
DPRINT("ScmLoadService() called\n");
{
Group->ServicesRunning = TRUE;
}
+
+ /* Log a successful service start */
+ lpErrorStrings[0] = Service->lpDisplayName;
+ lpErrorStrings[1] = L"start";
+ ScmLogEvent(EVENT_SERVICE_CONTROL_SUCCESS,
+ EVENTLOG_INFORMATION_TYPE,
+ 2,
+ lpErrorStrings);
}
else
{
{
/* Log a failed service start */
swprintf(szErrorBuffer, L"%lu", dwError);
- ErrorLogStrings[0] = Service->lpServiceName;
- ErrorLogStrings[1] = szErrorBuffer;
- ScmLogError(EVENT_SERVICE_START_FAILED,
+ lpErrorStrings[0] = Service->lpServiceName;
+ lpErrorStrings[1] = szErrorBuffer;
+ ScmLogEvent(EVENT_SERVICE_START_FAILED,
+ EVENTLOG_ERROR_TYPE,
2,
- ErrorLogStrings);
+ lpErrorStrings);
}
#if 0
DWORD dwControlsAccepted;
DWORD dwCurrentState;
HKEY hServicesKey = NULL;
+ LPCWSTR lpErrorStrings[2];
DPRINT("RControlService() called\n");
sizeof(SERVICE_STATUS));
}
+ if (dwError == ERROR_SUCCESS)
+ {
+ if (dwControl != SERVICE_CONTROL_INTERROGATE)
+ {
+ /* Log a sucessful send control */
+ lpErrorStrings[0] = lpService->lpDisplayName;
+
+ switch(dwControl)
+ {
+ case SERVICE_CONTROL_STOP:
+ lpErrorStrings[1] = L"stop";
+ break;
+
+ case SERVICE_CONTROL_PAUSE:
+ lpErrorStrings[1] = L"pause";
+ break;
+
+ case SERVICE_CONTROL_CONTINUE:
+ lpErrorStrings[1] = L"continue";
+ break;
+
+ default:
+ lpErrorStrings[1] = L"other";
+ break;
+ }
+
+ ScmLogEvent(EVENT_SERVICE_CONTROL_SUCCESS,
+ EVENTLOG_INFORMATION_TYPE,
+ 2,
+ lpErrorStrings);
+ }
+ }
+
return dwError;
}
/* Unlock the service database */
ScmUnlockDatabase();
- /* Log a failed service stop */
if ((lpServiceStatus->dwCurrentState == SERVICE_STOPPED) &&
- (dwPreviousState != SERVICE_STOPPED))
+ (dwPreviousState != SERVICE_STOPPED) &&
+ (lpServiceStatus->dwWin32ExitCode != ERROR_SUCCESS))
+ {
+ /* Log a failed service stop */
+ swprintf(szErrorBuffer, L"%lu", lpServiceStatus->dwWin32ExitCode);
+ lpErrorStrings[0] = lpService->lpDisplayName;
+ lpErrorStrings[1] = szErrorBuffer;
+
+ ScmLogEvent(EVENT_SERVICE_EXIT_FAILED,
+ EVENTLOG_ERROR_TYPE,
+ 2,
+ lpErrorStrings);
+ }
+ else if (lpServiceStatus->dwCurrentState != dwPreviousState &&
+ (lpServiceStatus->dwCurrentState == SERVICE_STOPPED ||
+ lpServiceStatus->dwCurrentState == SERVICE_RUNNING ||
+ lpServiceStatus->dwCurrentState == SERVICE_PAUSED))
{
- if (lpServiceStatus->dwWin32ExitCode != ERROR_SUCCESS)
+ /* Log a successful service status change */
+ lpErrorStrings[0] = lpService->lpDisplayName;
+
+ switch(lpServiceStatus->dwCurrentState)
{
- swprintf(szErrorBuffer, L"%lu", lpServiceStatus->dwWin32ExitCode);
- lpErrorStrings[0] = lpService->lpDisplayName;
- lpErrorStrings[1] = szErrorBuffer;
+ case SERVICE_STOPPED:
+ lpErrorStrings[1] = L"stopped";
+ break;
- ScmLogError(EVENT_SERVICE_EXIT_FAILED,
- 2,
- lpErrorStrings);
+ case SERVICE_RUNNING:
+ lpErrorStrings[1] = L"running";
+ break;
+
+ case SERVICE_PAUSED:
+ lpErrorStrings[1] = L"paused";
+ break;
}
+
+ ScmLogEvent(EVENT_SERVICE_STATUS_SUCCESS,
+ EVENTLOG_INFORMATION_TYPE,
+ 2,
+ lpErrorStrings);
}
DPRINT("Set %S to %lu\n", lpService->lpDisplayName, lpService->Status.dwCurrentState);