Я пытаюсь написать windows приложение-службу, оно работает нормально, но когда я пытаюсь его остановить, происходят странные вещи.
if (!ControlService(
service,
SERVICE_CONTROL_STOP,
(LPSERVICE_STATUS)&ssp))
{
//TODO: Log that can not send service a stop signal
std::cout << ssp.dwCurrentState << std::endl;
std::cout << GetLastError();
CloseServiceHandle(service);
CloseServiceHandle(SCManager);
return false;
}
То, что GetLastError () показывает ERROR_SERVICE_CANNOT_ACCEPT_CTRL (1061 ) код ошибки и MSDN говорит, что эта ошибка может возникать только в том случае, если состояние процесса равно SERVICE_STOPPED, SERVICE_START_PENDING или SERVICE_STOP_PENDING, но ssp.dwCurrentState имеет значение SERVICE_RUNNING. Та же ошибка возникает при попытке остановить службу из диспетчера задач.
Что может вызвать такое поведение?