Borland C ++:Windows服务如何自行关闭?

时间:2017-11-21 17:47:43

标签: service c++builder shutdown

我有一个用Borland C ++ Builder编写的旧Windows服务,我需要对其进行扩展,以便它可以在某些条件下自行关闭。

如果我通过服务控制管理器手动关闭服务,它会正常关闭而不会出现任何问题。所以我想,调用this->DoShutdown();就足够了(this是从TService派生的实例)。但这使服务处于“关闭......”状态。之后我可以调用ExitProcess,但这会在事件日志中创建一个条目,表明该服务已意外关闭。

那么让Borland C ++ Windows服务自行关闭的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

DoShutdown()TService在Windows关闭时收到来自SCM的SERVICE_CONTROL_SHUTDOWN请求时调用。 DoShutdown()不能直接在用户代码中调用。

让您的服务自行终止的最简单方法是调用其Controller()方法(直接或通过其全局ServiceController()函数),传递SERVICE_CONTROL_STOP或{{1}在SERVICE_CONTROL_SHUTDOWN参数中。让服务处理请求,好像它来自SCM,因此它可以采取相应的行动。