サービス制御要求

実行中のサービスに制御要求を送信するために、サービス制御プログラムは ControlService 関数を使用します。 この関数は、指定されたサービスの HandlerEx 関数に渡されるコントロール値を指定します。 この制御値には、ユーザー定義コードを指定することも、呼び出し元プログラムが以下のアクションを実行できるようにする標準コードの 1 つを指定することもできます。

  • サービスを停止します (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 を使用したサービスの制御