Call ScmrStartServiceW in StartServiceA to prevent code duplicating between ScmrStartServiceA/W in services.exe

svn path=/trunk/; revision=23519
This commit is contained in:
Hervé Poussineau
2006-08-07 17:04:48 +00:00
parent 552dc71367
commit 30c988c9be
2 changed files with 13 additions and 10 deletions
+1 -2
View File
@@ -2094,8 +2094,7 @@ ScmrStartServiceA(handle_t BindingHandle,
unsigned long cbBufSize)
{
DPRINT1("ScmrStartServiceA() called\n");
return ERROR_SUCCESS;
// return ERROR_CALL_NOT_IMPLEMENTED;
return ERROR_CALL_NOT_IMPLEMENTED;
}
+12 -8
View File
@@ -1970,16 +1970,16 @@ StartServiceA(SC_HANDLE hService,
DWORD dwNumServiceArgs,
LPCSTR *lpServiceArgVectors)
{
LPSTR lpBuffer;
LPSTR lpStr;
LPWSTR lpBuffer;
LPWSTR lpStr;
DWORD dwError;
DWORD dwBufSize;
DWORD i;
DWORD i, step;
dwBufSize = 0;
for (i = 0; i < dwNumServiceArgs; i++)
{
dwBufSize += (strlen(lpServiceArgVectors[i]) + 1);
dwBufSize += MultiByteToWideChar(CP_ACP, 0, lpServiceArgVectors[i], -1, NULL, 0);
}
DPRINT1("dwBufSize: %lu\n", dwBufSize);
@@ -1993,11 +1993,15 @@ StartServiceA(SC_HANDLE hService,
lpStr = lpBuffer;
for (i = 0; i < dwNumServiceArgs; i++)
{
strcpy(lpStr, lpServiceArgVectors[i]);
lpStr += (strlen(lpServiceArgVectors[i]) + 1);
step = MultiByteToWideChar(CP_ACP, 0,
lpServiceArgVectors[i], -1,
lpStr, lpBuffer + dwBufSize - lpStr);
if (step == 0)
return FALSE;
lpStr += step + 1;
}
dwError = ScmrStartServiceA(BindingHandle,
dwError = ScmrStartServiceW(BindingHandle,
(unsigned int)hService,
dwNumServiceArgs,
(unsigned char *)lpBuffer,
@@ -2007,7 +2011,7 @@ StartServiceA(SC_HANDLE hService,
if (dwError != ERROR_SUCCESS)
{
DPRINT1("ScmrStartServiceA() failed (Error %lu)\n", dwError);
DPRINT1("ScmrStartServiceW() failed (Error %lu)\n", dwError);
SetLastError(dwError);
return FALSE;
}