[WLANSVC]
authorSylvain Petreolle <spetreolle@yahoo.fr>
Thu, 11 Mar 2010 16:36:11 +0000 (16:36 +0000)
committerSylvain Petreolle <spetreolle@yahoo.fr>
Thu, 11 Mar 2010 16:36:11 +0000 (16:36 +0000)
Correctly start and report status to the service manager.

svn path=/trunk/; revision=46099

reactos/base/services/wlansvc/wlansvc.c

index 86302f6..5f0e1e6 100644 (file)
@@ -21,6 +21,7 @@
 
 SERVICE_STATUS_HANDLE ServiceStatusHandle;
 SERVICE_STATUS SvcStatus;
 
 SERVICE_STATUS_HANDLE ServiceStatusHandle;
 SERVICE_STATUS SvcStatus;
+static WCHAR ServiceName[] = L"WlanSvc";
 
 /* FUNCTIONS *****************************************************************/
 static DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
 
 /* FUNCTIONS *****************************************************************/
 static DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
@@ -94,13 +95,14 @@ ServiceMain(DWORD argc, LPWSTR *argv)
     DPRINT("ServiceMain() called\n");
 
     SvcStatus.dwServiceType             = SERVICE_WIN32_OWN_PROCESS;
     DPRINT("ServiceMain() called\n");
 
     SvcStatus.dwServiceType             = SERVICE_WIN32_OWN_PROCESS;
+    SvcStatus.dwCurrentState            = SERVICE_START_PENDING;
     SvcStatus.dwControlsAccepted        = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
     SvcStatus.dwCheckPoint              = 0;
     SvcStatus.dwControlsAccepted        = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
     SvcStatus.dwCheckPoint              = 0;
-    SvcStatus.dwWin32ExitCode           = 0;
+    SvcStatus.dwWin32ExitCode           = NO_ERROR;
     SvcStatus.dwServiceSpecificExitCode = 0;
     SvcStatus.dwWaitHint                = 4000;
 
     SvcStatus.dwServiceSpecificExitCode = 0;
     SvcStatus.dwWaitHint                = 4000;
 
-    ServiceStatusHandle = RegisterServiceCtrlHandlerExW(SERVICE_NAME,
+    ServiceStatusHandle = RegisterServiceCtrlHandlerExW(ServiceName,
                                                         ServiceControlHandler,
                                                         NULL);
 
                                                         ServiceControlHandler,
                                                         NULL);
 
@@ -115,15 +117,15 @@ ServiceMain(DWORD argc, LPWSTR *argv)
                            NULL);
 
     if (!hThread)
                            NULL);
 
     if (!hThread)
+    {
         DPRINT("Can't create RpcThread\n");
         DPRINT("Can't create RpcThread\n");
+        UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOPPED, 0);
+    }
     else
     {
     else
     {
-        WaitForSingleObject(hThread, INFINITE);
         CloseHandle(hThread);
     }
 
         CloseHandle(hThread);
     }
 
-    UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOPPED, 0);
-
     DPRINT("ServiceMain() done\n");
 }
 
     DPRINT("ServiceMain() done\n");
 }
 
@@ -132,7 +134,7 @@ wmain(int argc, WCHAR *argv[])
 {
     SERVICE_TABLE_ENTRYW ServiceTable[2] =
     {
 {
     SERVICE_TABLE_ENTRYW ServiceTable[2] =
     {
-        {SERVICE_NAME, ServiceMain},
+        {ServiceName, ServiceMain},
         {NULL, NULL}
     };
 
         {NULL, NULL}
     };