ADVAPI32: implement ChangeServiceConfig2A using ChangeServiceConfig2W

Mike McCormack mike at codeweavers.com
Wed Oct 20 04:42:54 CDT 2004


This is not a resend. It is a seperate function.

Mike

ChangeLog:
* implement ChangeServiceConfig2A using ChangeServiceConfig2W

-------------- next part --------------
Index: dlls/advapi32/service.c
===================================================================
RCS file: /home/wine/wine/dlls/advapi32/service.c,v
retrieving revision 1.60
diff -u -r1.60 service.c
--- dlls/advapi32/service.c	27 Sep 2004 20:35:27 -0000	1.60
+++ dlls/advapi32/service.c	20 Oct 2004 07:47:16 -0000
@@ -1476,8 +1501,41 @@
 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;
 }
 
 /******************************************************************************


More information about the wine-patches mailing list