Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > RegisterServiceCtrlHandler возвращает NULL


Автор: reider 2.2.2018, 14:16
Доброго времени суток.
Пишу в VC 2013, под Windows 8.1 x64
Пытаюсь создать сервис , дабы в дальнейшем обрабатывать события подключения/отключения USB накопителей.
Но, возникла следующая ситуация:
Код

#define SVCNAME TEXT("SvcNamppe")
SERVICE_STATUS_HANDLE   gSvcStatusHandle;
VOID WINAPI SvcCtrlHandler(DWORD);
.......

gSvcStatusHandle = RegisterServiceCtrlHandler(
        SVCNAME,
        SvcCtrlHandler);

gSvcStatusHandle равен нулю , а GetLastError возвращает 5.
Что я делаю не так?
Заранее благодарен.

Автор: xvr 2.2.2018, 14:26
5 это access denied. Вы точно пытаетесь стартовать как сервис, а не как консольное приложение?

Автор: reider 2.2.2018, 14:31
Как консольное....
А как это указать в студии?

Автор: xvr 2.2.2018, 18:15
Цитата(reider @  2.2.2018,  14:31 Найти цитируемый пост)
А как это указать в студии?

Никак. Сервисы запускаются в принципе по другому. Его сначала надо зарегистрировать в системе (как сервис) через SCM (Service Control manager). А потом запускать через SCM.
Регистрация обычно встраивается в сам сервис, но можно и снаружи (через утилиту sc)

Прикрепляю вырезку из учебного сервиса, там есть код для управления сервисом и main с его использованием

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)