从服务管理程序停止一个 Windows 服务时的流程,该如何处理

从服务管理程序停止一个 Windows 服务时的流程
从服务管理器手动停止一个windows服务时, 会有哪些动作:
如调用哪些函数, 是否释放资源等

望知情者能给出详细解答.

------解决方案--------------------
第一步:OpenSCManager
第二步:OpenService
第三步:ControlService
具体用法看MSDN
------解决方案--------------------
服务管理器会调用服务的ServiceCtrl,命令码是SERVICE_STOP;
服务收到停止命令后马上SetServiceStatus为STOP_PENDING;
服务开始做退出前的清理工作;
清理完毕再SetServiceStatus为STOPPED。

剩下的事情又交还给服务管理器,由它来停止服务进程。如果服务处理中间不正确设置当前服务状态的话,服务管理器将会认为服务没有响应,并在30秒后强制终止服务进程。
------解决方案--------------------
上述过程表述有些错误的地方,但不影响过程的理解。

------解决方案--------------------
怎么交互需要自己写代码控制,上面只是说了大体流程。
------解决方案--------------------
ServiceMain和ServiceCtrl是服务程序必须要实现的静态函数,用来被服务管理器调用
------解决方案--------------------
在服务程序注册的处理函数中响应SERVICE_CONTROL_STOP控制码。