[SERVICES]

Replace hard-coded strings by string resources.

svn path=/trunk/; revision=66314
This commit is contained in:
Eric Kohl 2015-02-16 11:47:40 +00:00
parent 5329a4681c
commit b34d3ab3cd
6 changed files with 89 additions and 43 deletions

View file

@ -1340,7 +1340,7 @@ ScmWaitForServiceConnect(PSERVICE Service)
OVERLAPPED Overlapped = {0};
#endif
#if 0
LPCWSTR lpErrorStrings[3];
LPCWSTR lpLogStrings[3];
WCHAR szBuffer1[20];
WCHAR szBuffer2[20];
#endif
@ -1377,13 +1377,13 @@ ScmWaitForServiceConnect(PSERVICE Service)
#if 0
_ultow(PipeTimeout, szBuffer1, 10);
lpErrorStrings[0] = Service->lpDisplayName;
lpErrorStrings[1] = szBuffer1;
lpLogStrings[0] = Service->lpDisplayName;
lpLogStrings[1] = szBuffer1;
ScmLogEvent(EVENT_CONNECTION_TIMEOUT,
EVENTLOG_ERROR_TYPE,
2,
lpErrorStrings);
lpLogStrings);
#endif
DPRINT1("Log EVENT_CONNECTION_TIMEOUT by %S\n", Service->lpDisplayName);
@ -1444,12 +1444,12 @@ ScmWaitForServiceConnect(PSERVICE Service)
#if 0
_ultow(PipeTimeout, szBuffer1, 10);
lpErrorStrings[0] = szBuffer1;
lpLogStrings[0] = szBuffer1;
ScmLogEvent(EVENT_READFILE_TIMEOUT,
EVENTLOG_ERROR_TYPE,
1,
lpErrorStrings);
lpLogStrings);
#endif
DPRINT1("Log EVENT_READFILE_TIMEOUT by %S\n", Service->lpDisplayName);
@ -1491,14 +1491,14 @@ ScmWaitForServiceConnect(PSERVICE Service)
_ultow(Service->lpImage->dwProcessId, szBuffer1, 10);
_ultow(dwProcessId, szBuffer2, 10);
lpErrorStrings[0] = Service->lpDisplayName;
lpErrorStrings[1] = szBuffer1;
lpErrorStrings[2] = szBuffer2;
lpLogStrings[0] = Service->lpDisplayName;
lpLogStrings[1] = szBuffer1;
lpLogStrings[2] = szBuffer2;
ScmLogEvent(EVENT_SERVICE_DIFFERENT_PID_CONNECTED,
EVENTLOG_WARNING_TYPE,
3,
lpErrorStrings);
lpLogStrings);
#endif
DPRINT1("Log EVENT_SERVICE_DIFFERENT_PID_CONNECTED by %S\n", Service->lpDisplayName);
@ -1625,8 +1625,8 @@ ScmLoadService(PSERVICE Service,
{
PSERVICE_GROUP Group = Service->lpGroup;
DWORD dwError = ERROR_SUCCESS;
LPCWSTR lpErrorStrings[2];
WCHAR szErrorBuffer[32];
LPCWSTR lpLogStrings[2];
WCHAR szLogBuffer[80];
DPRINT("ScmLoadService() called\n");
DPRINT("Start Service %p (%S)\n", Service, Service->lpServiceName);
@ -1682,25 +1682,27 @@ ScmLoadService(PSERVICE Service,
}
/* Log a successful service start */
lpErrorStrings[0] = Service->lpDisplayName;
lpErrorStrings[1] = L"start";
LoadStringW(GetModuleHandle(NULL), IDS_SERVICE_START, szLogBuffer, 80);
lpLogStrings[0] = Service->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_CONTROL_SUCCESS,
EVENTLOG_INFORMATION_TYPE,
2,
lpErrorStrings);
lpLogStrings);
}
else
{
if (Service->dwErrorControl != SERVICE_ERROR_IGNORE)
{
/* Log a failed service start */
swprintf(szErrorBuffer, L"%lu", dwError);
lpErrorStrings[0] = Service->lpServiceName;
lpErrorStrings[1] = szErrorBuffer;
swprintf(szLogBuffer, L"%lu", dwError);
lpLogStrings[0] = Service->lpServiceName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_START_FAILED,
EVENTLOG_ERROR_TYPE,
2,
lpErrorStrings);
lpLogStrings);
}
#if 0

View file

@ -0,0 +1,12 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_SERVICE_START "start"
IDS_SERVICE_STOP "stop"
IDS_SERVICE_PAUSE "pause"
IDS_SERVICE_RESUME "resume"
IDS_SERVICE_RUNNING "running"
IDS_SERVICE_STOPPED "stopped"
IDS_SERVICE_PAUSED "paused"
END

View file

@ -0,0 +1,9 @@
#pragma once
#define IDS_SERVICE_START 100
#define IDS_SERVICE_STOP 101
#define IDS_SERVICE_PAUSE 102
#define IDS_SERVICE_RESUME 103
#define IDS_SERVICE_RUNNING 104
#define IDS_SERVICE_STOPPED 105
#define IDS_SERVICE_PAUSED 106

View file

@ -1085,7 +1085,9 @@ DWORD RControlService(
DWORD dwControlsAccepted;
DWORD dwCurrentState;
HKEY hServicesKey = NULL;
LPCWSTR lpErrorStrings[2];
LPCWSTR lpLogStrings[2];
WCHAR szLogBuffer[80];
UINT uID;
DPRINT("RControlService() called\n");
@ -1245,34 +1247,35 @@ DWORD RControlService(
if (dwError == ERROR_SUCCESS)
{
if (dwControl != SERVICE_CONTROL_INTERROGATE)
if (dwControl == SERVICE_CONTROL_STOP ||
dwControl == SERVICE_CONTROL_PAUSE ||
dwControl == SERVICE_CONTROL_CONTINUE)
{
/* Log a sucessful send control */
lpErrorStrings[0] = lpService->lpDisplayName;
switch(dwControl)
switch (dwControl)
{
case SERVICE_CONTROL_STOP:
lpErrorStrings[1] = L"stop";
uID = IDS_SERVICE_STOP;
break;
case SERVICE_CONTROL_PAUSE:
lpErrorStrings[1] = L"pause";
uID = IDS_SERVICE_PAUSE;
break;
case SERVICE_CONTROL_CONTINUE:
lpErrorStrings[1] = L"continue";
break;
default:
lpErrorStrings[1] = L"other";
uID = IDS_SERVICE_RESUME;
break;
}
LoadStringW(GetModuleHandle(NULL), uID, szLogBuffer, 80);
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_CONTROL_SUCCESS,
EVENTLOG_INFORMATION_TYPE,
2,
lpErrorStrings);
lpLogStrings);
}
}
@ -1652,8 +1655,9 @@ DWORD RSetServiceStatus(
PSERVICE lpService;
DWORD dwPreviousState;
DWORD dwPreviousType;
LPCWSTR lpErrorStrings[2];
WCHAR szErrorBuffer[32];
LPCWSTR lpLogStrings[2];
WCHAR szLogBuffer[80];
UINT uID;
DPRINT("RSetServiceStatus() called\n");
DPRINT("hServiceStatus = %lu\n", hServiceStatus);
@ -1730,14 +1734,14 @@ DWORD RSetServiceStatus(
(lpServiceStatus->dwWin32ExitCode != ERROR_SUCCESS))
{
/* Log a failed service stop */
swprintf(szErrorBuffer, L"%lu", lpServiceStatus->dwWin32ExitCode);
lpErrorStrings[0] = lpService->lpDisplayName;
lpErrorStrings[1] = szErrorBuffer;
swprintf(szLogBuffer, L"%lu", lpServiceStatus->dwWin32ExitCode);
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_EXIT_FAILED,
EVENTLOG_ERROR_TYPE,
2,
lpErrorStrings);
lpLogStrings);
}
else if (lpServiceStatus->dwCurrentState != dwPreviousState &&
(lpServiceStatus->dwCurrentState == SERVICE_STOPPED ||
@ -1745,27 +1749,29 @@ DWORD RSetServiceStatus(
lpServiceStatus->dwCurrentState == SERVICE_PAUSED))
{
/* Log a successful service status change */
lpErrorStrings[0] = lpService->lpDisplayName;
switch(lpServiceStatus->dwCurrentState)
{
case SERVICE_STOPPED:
lpErrorStrings[1] = L"stopped";
uID = IDS_SERVICE_STOPPED;
break;
case SERVICE_RUNNING:
lpErrorStrings[1] = L"running";
uID = IDS_SERVICE_RUNNING;
break;
case SERVICE_PAUSED:
lpErrorStrings[1] = L"paused";
uID = IDS_SERVICE_PAUSED;
break;
}
LoadStringW(GetModuleHandle(NULL), uID, szLogBuffer, 80);
lpLogStrings[0] = lpService->lpDisplayName;
lpLogStrings[1] = szLogBuffer;
ScmLogEvent(EVENT_SERVICE_STATUS_SUCCESS,
EVENTLOG_INFORMATION_TYPE,
2,
lpErrorStrings);
lpLogStrings);
}
DPRINT("Set %S to %lu\n", lpService->lpDisplayName, lpService->Status.dwCurrentState);

View file

@ -16,6 +16,7 @@
#include <winbase.h>
#include <winsvc.h>
#include <winreg.h>
#include <winuser.h>
#include <netevent.h>
#define NTOS_MODE_USER
#include <ndk/obfuncs.h>
@ -23,6 +24,8 @@
#include <services/services.h>
#include <svcctl_s.h>
#include "resource.h"
typedef struct _SERVICE_GROUP
{
LIST_ENTRY GroupListEntry;
@ -196,6 +199,7 @@ VOID ScmLogEvent(DWORD dwEventId,
WORD wType,
WORD wStrings,
LPCWSTR *lpStrings);
LPWSTR ScmGetResourceString(UINT uID);
VOID ScmWaitForLsa(VOID);
#endif /* _SERVICES_H */

View file

@ -1,4 +1,17 @@
#include <windef.h>
#include <winuser.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "Service Control Manager"
#define REACTOS_STR_INTERNAL_NAME "Services"
#define REACTOS_STR_ORIGINAL_FILENAME "Services.exe"
#include <reactos/version.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif