サービス制御要求
実行中のサービスに制御要求を送信するために、サービス制御プログラムは、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コントロールの値を使用すると、返される状態情報が最新であることが保証されます。
関連トピック