2010-09-20 20 views
0

嗯,我最近开始开发驱动程序,所以我认为我应该让一个类以编程方式启动服务。但是,当然,像往常一样,我在路上遇到了一些麻烦。正在启动一项服务?

我使用StartService来启动它,但由于某种原因它只是挂起,我已经做了一些关于互联网的研究,它似乎等待ServiceMain函数的保证,告诉控制管理器该服务已经成功初始化并正在运行。

问题是,似乎没有任何工作,我已经使用StartServiceCtrlDispatcher()初始化ServiceMain函数,但它似乎永远不会被调用,我已经将一些代码插入到servicemain函数中以确保它被调用,并且这不是因为某种奇怪的原因。

我确定过程中没有其他函数失败,CreateService返回成功,就像OpenService一样,但是一旦我到达StartService,它就会挂起,并且它会让我再次调用StartService的唯一方法是在我重新启动后。所以,我想我问的是,如果有任何简单的解释我可以如何解决这个问题,也许一些代码,如果你们不介意。

在此先感谢。 非常感谢。

+0

你实际上是在开发服务还是仅仅是一个启动服务的程序?如果你正在开发这个服务,那么这听起来像你的问题在那里(而不是在另一个调用StartService的程序中)。安装服务后,如果尝试通过“控制面板”的“服务”部分启动它,会发生什么情况? – TheUndeadFish 2010-09-20 02:47:43

+0

是的,我正在开发该服务,但现在它只是将消息打印到调试器,我可以使用OSRloader进行注册和启动。我不确定服务本身是否需要其中的任何内容才能正常工作,但现在它只具有driverentry功能。 – David 2010-09-20 02:54:47

回答

0

我相信有大量的示例代码here :)

一般来说不过,如果StartService挂,那是因为你给了垃圾数据。无论服务有多糟糕,StartService应立即返回。

+1

比利,那是我看到的第一个地方,我试图重新编写,以适应我的需求,但它不工作。正如我所说的,由于某种原因,ServiceMain函数甚至没有被调用。 – David 2010-09-20 03:05:42

+0

那么StartService的第一个调用似乎正在工作,并且在服务列表中我可以看到我的运行,所以它显然不是垃圾。还是有什么更多的这一点,我错过了? – David 2010-09-20 03:07:55

+0

@ Davidm44:我以为你说'StartService'挂?我对你在这里的意思感到困惑。 – 2010-09-20 03:15:17