From 5bc8077511ee2dd8d3f7bcb8a2e813ecae99594b Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Thu, 21 Oct 2004 20:57:09 +0000 Subject: [PATCH] Implement ChangeServiceConfig2A using ChangeServiceConfig2W. --- dlls/advapi32/service.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 9025bdcdfa9..6ec9bf7f18d 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1500,8 +1500,41 @@ BOOL WINAPI ChangeServiceConfigA( SC_HANDLE hService, DWORD dwServiceType, BOOL WINAPI ChangeServiceConfig2A( SC_HANDLE hService, DWORD dwInfoLevel, LPVOID lpInfo) { - FIXME("STUB: %p %ld %p\n",hService, dwInfoLevel, lpInfo); - return TRUE; + BOOL r = FALSE; + + TRACE("%p %ld %p\n",hService, dwInfoLevel, lpInfo); + + if (dwInfoLevel == SERVICE_CONFIG_DESCRIPTION) + { + LPSERVICE_DESCRIPTIONA sd = (LPSERVICE_DESCRIPTIONA) lpInfo; + SERVICE_DESCRIPTIONW sdw; + + sdw.lpDescription = SERV_dup( sd->lpDescription ); + + r = ChangeServiceConfig2W( hService, dwInfoLevel, &sdw ); + + SERV_free( sdw.lpDescription ); + } + else if (dwInfoLevel == SERVICE_CONFIG_FAILURE_ACTIONS) + { + LPSERVICE_FAILURE_ACTIONSA fa = (LPSERVICE_FAILURE_ACTIONSA) lpInfo; + SERVICE_FAILURE_ACTIONSW faw; + + faw.dwResetPeriod = fa->dwResetPeriod; + faw.lpRebootMsg = SERV_dup( fa->lpRebootMsg ); + faw.lpCommand = SERV_dup( fa->lpCommand ); + faw.cActions = fa->cActions; + faw.lpsaActions = fa->lpsaActions; + + r = ChangeServiceConfig2W( hService, dwInfoLevel, &faw ); + + SERV_free( faw.lpRebootMsg ); + SERV_free( faw.lpCommand ); + } + else + SetLastError( ERROR_INVALID_PARAMETER ); + + return r; } /******************************************************************************