首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务控制管理器(SCM)对服务的方法调用有什么保证?

服务控制管理器(SCM)对服务的方法调用有什么保证?
EN

Stack Overflow用户
提问于 2013-08-25 19:27:36
回答 1查看 628关注 0票数 0

服务控制管理器(SCM)对服务的方法调用有什么保证?

它是否能保证不会出现类似的情况?

  • 停止服务时,OnStart/OnPause/OnContinue
  • 当服务暂停时,OnStart/OnPause
  • 服务运行时的OnStop/OnContinue
  • 在命令方法已经执行时调用的任何命令方法
    • OnStart,而OnStart已经在执行
    • OnStop时OnPause正在执行

到目前为止,我发现的最好的引用似乎表明这些保证确实已经完成,但是我发现的文档中唯一的引用非常模糊,所以我正在试图找到一个更好的引用。

下面是MSDN论坛上的一个线程,它说SCM确保状态是一致的,或者“至少我从未发现如果服务没有运行或暂停,SCM发送停止请求的情况可能发生”。

到目前为止,我在文档中找到了最好的参考:

这些方法OnStart/OnStop/等等表示服务在其生命周期中经过的状态;服务从一种状态过渡到下一种状态。例如,在调用OnContinue命令之前,您永远不会得到响应OnStart命令的服务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 21:20:06

Michael在MSDN论坛上为这个问题提供了一个好的答案,该论坛引用了Win32 API,其中记录了SCM将如何响应无效的控制代码(以各种方式拒绝它们)。

只有当SCM认为服务处于适当的状态并假定服务说它可以处理状态(暂停/继续)时,才会调用状态更改方法。

  • 如果服务停止,将调用OnStart。
  • 如果服务正在运行,则调用OnPause。
  • 如果服务暂停,则为OnContinue。
  • 暂停服务只能恢复或停止。
  • 正在运行的服务只能暂停或停止。
  • SCM将命令序列化为服务,因此一次只运行一个命令。

有关服务如何工作的更多信息,请参考Win32文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18432827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档