服务控制请求

若要将控制请求发送到正在运行的服务,服务控制程序使用 ControlService 函数。 此函数指定传递给指定服务的 HandlerEx 函数的控件值。 此控件值可以是用户定义的代码,也可以是使调用程序能够执行以下操作的标准代码之一:

  • 停止服务 (SERVICE_CONTROL_STOP) 。
  • 暂停服务 (SERVICE_CONTROL_PAUSE) 。
  • 继续执行暂停的服务 (SERVICE_CONTROL_CONTINUE) 。
  • 从服务 (SERVICE_CONTROL_INTERROGATE) 检索更新的状态信息。

每个服务指定它将接受和处理的控件值。 若要确定服务接受的标准控件值,请使用 QueryServiceStatusEx 函数或在对 ControlService 函数的调用中指定SERVICE_CONTROL_INTERROGATE控件值。 这些函数返回的SERVICE_STATUS结构的 dwControlsAccepted 成员指示服务是可以停止、暂停还是恢复。 所有服务都接受SERVICE_CONTROL_INTERROGATE控件值。

QueryServiceStatusEx 函数报告指定服务的最新状态,但不会从服务本身获取更新的状态。 在对 ControlService 的调用中使用SERVICE_CONTROL_INTERROGATE控件值可确保返回的状态信息是最新的。

使用 SC 控制服务