Jacek Caban : advapi32: Pass service name as argv[0] to ServiceMain.

Alexandre Julliard julliard at winehq.org
Fri Jun 15 13:34:41 CDT 2012


Module: wine
Branch: master
Commit: 52363aef65a3ad87ac2d840378cc6483c740ad80
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=52363aef65a3ad87ac2d840378cc6483c740ad80

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Jun 15 16:37:27 2012 +0200

advapi32: Pass service name as argv[0] to ServiceMain.

---

 dlls/advapi32/service.c           |    3 +--
 programs/services/services.c      |    5 +----
 programs/services/tests/service.c |    4 ++++
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 0e5001a..088de91 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -430,8 +430,7 @@ static DWORD WINAPI service_control_dispatcher(LPVOID arg)
                     !(service->full_access_handle = OpenServiceW( manager, data, GENERIC_READ|GENERIC_WRITE )))
                     FIXME( "failed to open service %s\n", debugstr_w(data) );
             }
-            result = service_handle_start(service, data + info.name_size,
-                                          data_size / sizeof(WCHAR) - info.name_size );
+            result = service_handle_start(service, data, data_size / sizeof(WCHAR));
             break;
         case WINESERV_SENDCONTROL:
             result = service_handle_control(service, info.control);
diff --git a/programs/services/services.c b/programs/services/services.c
index 5d8e40f..d28e47e 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -299,11 +299,8 @@ static void scmdatabase_autostart_services(struct scmdatabase *db)
     for (i = 0; i < size; i++)
     {
         DWORD err;
-        const WCHAR *argv[2];
         service = services_list[i];
-        argv[0] = service->name;
-        argv[1] = NULL;
-        err = service_start(service, 1, argv);
+        err = service_start(service, 0, NULL);
         if (err != ERROR_SUCCESS)
             WINE_FIXME("Auto-start service %s failed to start: %d\n",
                        wine_dbgstr_w(service->name), err);
diff --git a/programs/services/tests/service.c b/programs/services/tests/service.c
index 5348bb9..9de6085 100644
--- a/programs/services/tests/service.c
+++ b/programs/services/tests/service.c
@@ -94,6 +94,10 @@ static void WINAPI service_main(DWORD argc, char **argv)
     SERVICE_STATUS status;
     BOOL res;
 
+    service_ok(argc == 1, "argc = %d", argc);
+    if(argc)
+        service_ok(!strcmp(argv[0], service_name), "argv[0] = %s, expected %s", argv[0], service_name);
+
     service_handle = pRegisterServiceCtrlHandlerExA(service_name, service_handler, NULL);
     service_ok(service_handle != NULL, "RegisterServiceCtrlHandlerEx failed: %u\n", GetLastError());
     if(!service_handle)




More information about the wine-cvs mailing list