Winapi 如何从服务返回错误?

Winapi 如何从服务返回错误?,winapi,windows-services,service,Winapi,Windows Services,Service,我正在编写一个服务应用程序,有时在从服务MMC接收到服务控制停止后无法立即停止。我目前是这样处理的:(在伪代码中): 当服务可以停止(并且确实停止)时,它工作得很好,但当它无法停止时,我希望Windows报告我返回的错误(本例中为error_BUSY)。相反,Windows会显示一条消息,说明: "The service did not return an error. This could be an internal Windows error or an internal service

我正在编写一个服务应用程序,有时在从服务MMC接收到服务控制停止后无法立即停止。我目前是这样处理的:(在伪代码中):

当服务可以停止(并且确实停止)时,它工作得很好,但当它无法停止时,我希望Windows报告我返回的错误(本例中为error_BUSY)。相反,Windows会显示一条消息,说明:

"The service did not return an error. 
This could be an internal Windows error or an internal service error." 

所以我的问题是,如何使服务报告返回到SCM,它现在不能停止,并使MMC显示一条关于我返回的实际错误代码的消息

我知道这不能回答你的具体问题。但我认为答案是“没有办法”。无论如何,我会提出一个建议。大多数需要更多控制启动和关闭的应用程序,我可以想到Sap和Oracle,将windows服务用作管理服务,并实现gui或命令行界面来启动和停止实际的“工作进程”。

回答我自己的问题(在更详细地调查问题之后):服务应向SCM报告其状态,指示其是否可以接受服务控制停止代码,而不是从HandlerEx函数返回错误代码。如果服务检测到无法立即停止,则应清除其service_状态结构中的service_ACCEPT_STOP位,并调用SetServiceStatus()。这将首先防止SCM试图停止服务。当条件清除并且服务决定可以安全停止时,它应该设置服务_ACCEPT_stop位并再次调用SetServiceStatus()

这正是我正在做的。但这并不能回答我的问题,对不起。
"The service did not return an error. 
This could be an internal Windows error or an internal service error."