Set Tag value in registry when needed.

(Not tested due to bug 1048)

svn path=/trunk/; revision=19522
This commit is contained in:
Hervé Poussineau 2005-11-24 11:03:23 +00:00
parent 06ce8efe4f
commit 125e25d424

View file

@ -219,6 +219,17 @@ ScmCheckAccess(SC_HANDLE Handle,
} }
DWORD
ScmAssignNewTag(LPWSTR lpServiceGroup,
LPDWORD lpdwTagId)
{
/* FIXME */
DPRINT("Assigning new tag in group %S\n", lpServiceGroup);
*lpdwTagId = 0;
return ERROR_SUCCESS;
}
/* Function 0 */ /* Function 0 */
unsigned long unsigned long
ScmrCloseServiceHandle(handle_t BindingHandle, ScmrCloseServiceHandle(handle_t BindingHandle,
@ -599,7 +610,7 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
/* Open the service key */ /* Open the service key */
dwError = ScmOpenServiceKey(lpService->szServiceName, dwError = ScmOpenServiceKey(lpService->szServiceName,
KEY_WRITE, KEY_SET_VALUE,
&hServiceKey); &hServiceKey);
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
goto done; goto done;
@ -614,6 +625,7 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
REG_SZ, REG_SZ,
(LPBYTE)lpDisplayName, (LPBYTE)lpDisplayName,
(wcslen(lpDisplayName) + 1) * sizeof(WCHAR)); (wcslen(lpDisplayName) + 1) * sizeof(WCHAR));
/* FIXME: update lpService->lpDisplayName */
} }
if (dwServiceType != SERVICE_NO_CHANGE) if (dwServiceType != SERVICE_NO_CHANGE)
@ -627,6 +639,7 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
sizeof(DWORD)); sizeof(DWORD));
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
goto done; goto done;
/* FIXME: lpService->dwType = dwServiceType; */
} }
if (dwStartType != SERVICE_NO_CHANGE) if (dwStartType != SERVICE_NO_CHANGE)
@ -640,6 +653,7 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
sizeof(DWORD)); sizeof(DWORD));
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
goto done; goto done;
lpService->dwStartType = dwStartType;
} }
if (dwErrorControl != SERVICE_NO_CHANGE) if (dwErrorControl != SERVICE_NO_CHANGE)
@ -653,6 +667,7 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
sizeof(DWORD)); sizeof(DWORD));
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
goto done; goto done;
lpService->dwErrorControl = dwErrorControl;
} }
#if 0 #if 0
@ -700,11 +715,24 @@ ScmrChangeServiceConfigW(handle_t BiningHandle,
(wcslen(lpLoadOrderGroup) + 1) * sizeof(WCHAR)); (wcslen(lpLoadOrderGroup) + 1) * sizeof(WCHAR));
if (dwError != ERROR_SUCCESS) if (dwError != ERROR_SUCCESS)
goto done; goto done;
/* FIXME: update lpService->lpServiceGroup */
} }
if (lpdwTagId != NULL) if (lpdwTagId != NULL)
{ {
/* FIXME: Write tag */ dwError = ScmAssignNewTag(lpService->lpServiceGroup,
&lpService->dwTag);
if (dwError != ERROR_SUCCESS)
goto done;
dwError = RegSetValueExW(hServiceKey,
L"Tag",
0,
REG_DWORD,
(LPBYTE)&lpService->dwTag,
sizeof(DWORD));
if (dwError != ERROR_SUCCESS)
goto done;
*lpdwTagId = lpService->dwTag;
} }
/* Write dependencies */ /* Write dependencies */
@ -926,7 +954,18 @@ ScmrCreateServiceW(handle_t BindingHandle,
if (lpdwTagId != NULL) if (lpdwTagId != NULL)
{ {
/* FIXME: Write tag */ dwError = ScmAssignNewTag(lpService->lpServiceGroup,
&lpService->dwTag);
if (dwError != ERROR_SUCCESS)
goto done;
dwError = RegSetValueExW(hServiceKey,
L"Tag",
0,
REG_DWORD,
(LPBYTE)&lpService->dwTag,
sizeof(DWORD));
if (dwError != ERROR_SUCCESS)
goto done;
} }
/* Write dependencies */ /* Write dependencies */
@ -964,7 +1003,7 @@ done:;
*hService = (unsigned int)hServiceHandle; *hService = (unsigned int)hServiceHandle;
if (lpdwTagId != NULL) if (lpdwTagId != NULL)
*lpdwTagId = 0; /* FIXME */ *lpdwTagId = lpService->dwTag;
} }
else else
{ {