2010-09-20 3 views
0

Ну, я недавно занимался разработкой драйверов, поэтому я решил создать класс для программного запуска сервисов. Но, конечно, я столкнулся с некоторыми неприятностями по дороге, как обычно.Запуск службы?

Я использую StartService, чтобы запустить его, но по какой-то причине он просто зависает, я провел некоторое исследование через Интернет, и, похоже, он ждет от функции ServiceMain, чтобы сообщить диспетчеру управления, что служба успешно инициализирован и теперь запущен.

Проблема в том, что ничего не работает, я инициализировал функцию ServiceMain с помощью StartServiceCtrlDispatcher(), но она никогда не кажется вызванной, я вставил некоторый код в функцию servicemain, чтобы убедиться, что он вызван, и это не по какой-то нечетной причине.

Я удостоверился, что никакая другая функция процесса не сработала, CreateService возвращает успех, как и OpenService, но как только я доберусь до StartService, он зависает, и единственный способ, с помощью которого я позвоню StartService снова после перезагрузки.

Итак, я думаю, что я прошу, если есть какие-либо простые объяснения, как я могу это исправить, может быть, какой-то код, если вы, ребята, не возражаете.

Заранее спасибо. Очень ценится.

+0

Вы действительно разрабатываете услугу или просто программу для запуска службы? Если вы разрабатываете услугу, то, похоже, ваша проблема существует (не в другой программе, которая вызывает StartService). Как только служба будет установлена, что произойдет, если вы попытаетесь запустить ее через Служебную часть панели управления? – TheUndeadFish

+0

Да, я занимаюсь разработкой службы, но сейчас все, что она делает, печатает сообщение отладчику, и я смог зарегистрироваться и запустить его с помощью OSRloader. Я не уверен, что для самой службы в ней есть что-то, чтобы работать, но сейчас она имеет только функцию-драйвер. – David

ответ

0

Я считаю, что есть много примеров кода here :)

Вообще говоря, хотя, если StartService висит, это потому, что вы дали ему данные для мусора. Независимо от того, насколько плохо себя ведет служба, о которой идет речь, StartService должен немедленно вернуться.

+1

Билли, это было первое, на что я смотрел, я попробовал переписать это, чтобы соответствовать моим потребностям, но он не работал. Как я уже сказал, функция ServiceMain даже не вызвана по какой-то причине. – David

+0

Ну, первый звонок в StartService, похоже, работает, и в списке сервисов я вижу, что мой запуск работает, поэтому это, очевидно, не мусор. Или есть что-то еще, что мне не хватает? – David

+0

@ Davidm44: Я думал, вы сказали, что «StartService» висит? Я смущен тем, что вы имеете в виду здесь. –

Смежные вопросы