gpt4 book ai didi

c++ - Windows 服务不会停止并重新启动

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:10 34 4
gpt4 key购买 nike

我用C++写了一个windows服务,需要每天半夜重启,所以我在上面调用了exit(1),这样它就可以被SCM重启了。问题是它似乎每隔一个晚上就会部分启动并挂起。在事件日志中,我得到了这个:

应用程序弹出窗口 - 应用程序错误:“0x0043c145”处的指令引用了“0x00000035”处的内存。无法“读取”内存。

它似乎在打开与 SQL Server 2008 数据库的 ODBC 连接之前就失败了。我可以确认该服务在重新启动之前确实退出了;尽管如此,当它停止并重新启动时,我偶尔会收到此错误,但如果我一遍又一遍地手动停止并重新启动服务,我永远不会让它失败,如果我从终端端口控制进程并手动退出从那里它也永远不会失败。

如果我尝试附加一个调试器,进程就会退出,所以我也无法通过这种方式收集到任何有用的信息。

我绞尽脑汁想弄清楚发生了什么,但我不知道从哪里开始。有人有什么想法吗?

最佳答案

不是直接的答案,但如果您使用的是 Vista(以及我认为的后续版本),您有机会可以尝试:

"A service notifies the SCM to queue a failure action by entering the SERVICE_STOPPED state and setting SetServiceExitCode function's dwWin32ExitCode parameter to anything other than ERROR_SUCCESS."

Windows Vista introduced a new flag, FailureActionsOnNonCrashFailures, which services set if they want to be able to notify the SCM to initiate a failure action: See more in Vista services

关于c++ - Windows 服务不会停止并重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3879174/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com