| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Windows Service не стартует |
| Автор: freezeman 26.2.2012, 13:35 | ||
| Всем привет! Подскажите, пожалуйста, почему служба не запускается? Код проходит без ошибок, но проверяю диспетчер служб и не нахожу созданную службу... Код:
При StartServiceCtrlDispatcher выдает ошибку 1063!!! |
| Автор: freezeman 26.2.2012, 15:38 |
| Подскажите, в чем может быть проблема? Именно при запуске (StartServiceCtrlDispatcher) выдает ошибку. Пробовал как на XP x86, так и на Win 7 x86. Error 1063 |
| Автор: feodorv 26.2.2012, 16:30 | ||
Может,
Хотя не об этом. Ну и Может, (LPТSTR)...? |
| Автор: freezeman 26.2.2012, 18:21 | ||||
Спасибо за ответ! Я решил взять пример http://www.rsdn.ru/article/files/Classes/svcclass.xml, все прекрасно описывается. Но не могу теперь найти место, где выполнять мой код!! Может звучит глупо, но, как я понимаю, он должен располагаться в ServiceMain, пытаюсь вывести что-нибудь в файл, но ничего происходит... Прикрепил проект! Для запуска необходимо в командной строке указать ключ -install и запустить службу. Добавлено через 5 минут и 13 секунд Небольшая поправка, мой код выполняется в ServiceMain только после перезапуска или остановки службы (т.е. когда я запустил службу ничего не произошло, но после её остановки или перезапуска код начинает выполняться и пишет в файл) Каким это образом может происходить??? |
| Автор: feodorv 26.2.2012, 18:46 |
А каки образом это происходит? |
| Автор: freezeman 26.2.2012, 21:03 | ||
Скомпилировав exe, через командную строку передаю ключ -install |
| Автор: xvr 27.2.2012, 12:46 | ||||
Да
Нет. 'Просто запускать' его должен Service Manager, а не пользователь. Можно из панели управления, либо с коммандной строки через net start SServ1 |
| Автор: freezeman 27.2.2012, 12:53 | ||||||
Мне нужно создать в службе 3 потока, где их запускать в ServiceMain? |
| Автор: feodorv 27.2.2012, 13:11 | ||||||
Мда, точно, в функциональность этого экзешника не входит старт/стоп сервиса...
Зависит от задачи. Если это три сервиса, то на каждый нужен свой ServiceMain:
Если это один сервис, но с тремя потоками, тогда одна процедура ServiceMain и запуск потоков из ServiceMain после RegisterServiceCtrlHandlerEx. Добавлено через 11 минут и 54 секунды Только надо учесть, что один поток у Вас уже есть))) |
| Автор: xvr 27.2.2012, 13:42 |
Угу, вот только 'минимальным' я бы его не назвал В вашей библиотеке - в наследнике CServiceContext в методе OnServiceStart() (и не забыть их завершить в методе OnServiceStop() ) |
| Автор: freezeman 27.2.2012, 14:52 | ||
Да, минимальными их назвать трудно)) Я вписывал туда код записи в файл для проверки, но ничего не происходит...Может из-за того, что я сервис стартовал из Диспетчера служб Windows... Я ещё подумал, может сделать службу на C# и из нее запускать exe, где запускаются все 3 потока??? |
| Автор: xvr 27.2.2012, 18:54 | ||
Вставьте запуск нитей непосредственно в ServiceMain перед последним вызовом. |