SERVICE_STATUS_HANDLE ServiceStatusHandle;
SERVICE_STATUS SvcStatus;
+static WCHAR ServiceName[] = L"WlanSvc";
/* FUNCTIONS *****************************************************************/
static DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
case SERVICE_CONTROL_STOP:
UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOP_PENDING, 1);
RpcMgmtStopServerListening(NULL);
+ UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOPPED, 0);
break;
case SERVICE_CONTROL_INTERROGATE:
return NO_ERROR;
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.dwWin32ExitCode = 0;
+ SvcStatus.dwWin32ExitCode = NO_ERROR;
SvcStatus.dwServiceSpecificExitCode = 0;
SvcStatus.dwWaitHint = 4000;
- ServiceStatusHandle = RegisterServiceCtrlHandlerExW(SERVICE_NAME,
+ ServiceStatusHandle = RegisterServiceCtrlHandlerExW(ServiceName,
ServiceControlHandler,
NULL);
NULL);
if (!hThread)
+ {
DPRINT("Can't create RpcThread\n");
+ UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOPPED, 0);
+ }
else
{
- WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
- UpdateServiceStatus(ServiceStatusHandle, SERVICE_STOPPED, 0);
-
DPRINT("ServiceMain() done\n");
}
{
SERVICE_TABLE_ENTRYW ServiceTable[2] =
{
- {SERVICE_NAME, ServiceMain},
+ {ServiceName, ServiceMain},
{NULL, NULL}
};