* Sync up to trunk HEAD (r62502).

svn path=/branches/shell-experiments/; revision=62503
This commit is contained in:
Amine Khaldi 2014-03-15 14:56:08 +00:00
commit f4388e723d
442 changed files with 16244 additions and 5506 deletions

View file

@ -1617,12 +1617,13 @@ DWORD RSetServiceStatus(
{
PSERVICE lpService;
DWORD dwPreviousState;
DWORD dwPreviousType;
LPCWSTR lpErrorStrings[2];
WCHAR szErrorBuffer[32];
DPRINT("RSetServiceStatus() called\n");
DPRINT("hServiceStatus = %lu\n", hServiceStatus);
DPRINT("dwServiceType = %lu\n", lpServiceStatus->dwServiceType);
DPRINT("dwServiceType = 0x%lx\n", lpServiceStatus->dwServiceType);
DPRINT("dwCurrentState = %lu\n", lpServiceStatus->dwCurrentState);
DPRINT("dwControlsAccepted = %lu\n", lpServiceStatus->dwControlsAccepted);
DPRINT("dwWin32ExitCode = %lu\n", lpServiceStatus->dwWin32ExitCode);
@ -1660,16 +1661,33 @@ DWORD RSetServiceStatus(
return ERROR_INVALID_DATA;
}
/* Set the wait hint and check point only if the service is in a pending state,
otherwise they should be 0 */
if (lpServiceStatus->dwCurrentState == SERVICE_STOPPED ||
lpServiceStatus->dwCurrentState == SERVICE_PAUSED ||
lpServiceStatus->dwCurrentState == SERVICE_RUNNING)
{
lpServiceStatus->dwWaitHint = 0;
lpServiceStatus->dwCheckPoint = 0;
}
/* Lock the service database exclusively */
ScmLockDatabaseExclusive();
/* Save the current service state */
dwPreviousState = lpService->Status.dwCurrentState;
/* Save the current service type */
dwPreviousType = lpService->Status.dwServiceType;
/* Update the service status */
RtlCopyMemory(&lpService->Status,
lpServiceStatus,
sizeof(SERVICE_STATUS));
/* Restore the previous service type */
lpService->Status.dwServiceType = dwPreviousType;
/* Unlock the service database */
ScmUnlockDatabase();
@ -1755,7 +1773,7 @@ DWORD RChangeServiceConfigW(
LPWSTR lpImagePathW = NULL;
DPRINT("RChangeServiceConfigW() called\n");
DPRINT("dwServiceType = %lu\n", dwServiceType);
DPRINT("dwServiceType = 0x%lx\n", dwServiceType);
DPRINT("dwStartType = %lu\n", dwStartType);
DPRINT("dwErrorControl = %lu\n", dwErrorControl);
DPRINT("lpBinaryPathName = %S\n", lpBinaryPathName);
@ -1999,7 +2017,7 @@ DWORD RCreateServiceW(
DPRINT("lpServiceName = %S\n", lpServiceName);
DPRINT("lpDisplayName = %S\n", lpDisplayName);
DPRINT("dwDesiredAccess = %lx\n", dwDesiredAccess);
DPRINT("dwServiceType = %lu\n", dwServiceType);
DPRINT("dwServiceType = 0x%lx\n", dwServiceType);
DPRINT("dwStartType = %lu\n", dwStartType);
DPRINT("dwErrorControl = %lu\n", dwErrorControl);
DPRINT("lpBinaryPathName = %S\n", lpBinaryPathName);