服務控制要求

若要將控制要求傳送至執行中的服務,服務控制程式會使用 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 控制服務