Sus*_*rai 11 windows winapi windows-services
我看到我的Windows服务程序出现了奇怪的错误.我的服务程序StartServiceCtrlDispatcher()在它的最开始调用main(),但有时失败了1063 (ERROR_FAILED_SERVICE_CONTROLLER_CONNECT).
我知道如果用户手动启动程序(作为控制台程序),则会发生此错误.但事实并非如此. 当发生此错误时,我添加了一个代码来检查服务程序的父进程,它告诉services.exe是父进程(我认为可以安全地假设我的程序是由SCM正确启动的).
不幸的是,这个错误不能在我的开发机器上重现,也不能自己调试,但在用户系统上捕获的错误日志告诉:
StartServiceCtrlDispatcher()在返回失败之前会停止大约一秒钟.有没有人见过类似的错误?如果是这样,错误的原因是什么?
正如你已经可以看到谷歌没有答案和任何东西,这个问题并不常见.我相信问题出在你的服务中,并且它是从进程开始执行的代码StartServiceCtrlDispatcher(),并且很可能需要某种形式的破坏系统资源,可能是堆或者HANDLE.
听到这个消息你会很遗憾,但我不会对你的问题有一个神奇的答案.相反,我可以建议一些故障排除.
Microsoft Application Verifier在查找损坏方面非常有用.我建议你:
Basics\Heaps第一次选择.Basics\Handles.与Basics\Heaps此不同的是,这有时会引发"误报" - 代码中的错误不会造成太大伤害.无论如何,既然你正在狩猎,你最好修好你能找到的一切.我最担心的是双重释放HANDLE或类似的东西.HANDLE错误地解雇服务经理肯定会导致您的问题.Basics\*,但我不认为这会有所帮助.main()和之间的代码StartServiceCtrlDispatcher(),以及您可以拥有的任何全局构造函数.查找潜在的缓冲区溢出和错误HANDLE.