У меня проблемы с использованием WinAPI, потому что я хочу запустить собственный сервис из своего кода. Эта проблема не является распространенной, и я не думаю, что проблема в исходном коде службы. Я успешно установил службу с CreateService
. Это нормально, и это действительно появилось в реестре и сервисах. Итак, я хочу запустить службу, поэтому я создал точку входа для службы с использованием этой таблицы:
BOOL ConsoleService::Run(ConsoleService &service)
{
service_ = &service;
SERVICE_TABLE_ENTRY serviceTable[] =
{
{service.name_, ServiceMain},
{nullptr, nullptr}
};
return StartServiceCtrlDispatcher(serviceTable);
}
void WINAPI ConsoleService::ServiceMain(DWORD argc, PSTR *argv)
{
assert(service_ != nullptr);
service_->statusHandle_ = RegisterServiceCtrlHandler(service_->name_, ServiceCtrlHandler);
if (service_->statusHandle_ == nullptr)
throw GetLastError();
service_->Start(argc, argv);
}
Но StartServiceCtrlDispatcher
не удалось с ошибкой 1063 (подключение контроллера службы). Что может вызвать эту проблему?