サービスのハンドラー ルーチンです。
void Handler(
DWORD dwOpcode
) throw( );
パラメーター
- dwOpcode
ハンドラー操作を定義するスイッチ。 詳細については、次の「解説」を参照してください。
解説
サービスのステータスを取得したり、サービスの停止や一時中断などの命令を実行するために、サービス コントロール マネージャー (SCM: Service Control Manager) によって呼び出されるコードです。 SCM は、次に示すオペレーション コードをハンドラーに渡して、サービスの動作を指示します。
オペレーション コード |
説明 |
---|---|
SERVICE_CONTROL_STOP |
サービスを停止します。 atlbase.h 内の CAtlServiceModuleT::OnStop メソッドをオーバーライドし、動作を変更します。 |
SERVICE_CONTROL_PAUSE |
ユーザー実装です。 atlbase.h 内の空のメソッド CAtlServiceModuleT::OnPause をオーバーライドし、サービスを一時中断します。 |
SERVICE_CONTROL_CONTINUE |
ユーザー実装です。 atlbase.h 内の空のメソッド CAtlServiceModuleT::OnContinue をオーバーライドし、サービスを続行します。 |
SERVICE_CONTROL_INTERROGATE |
ユーザー実装です。 atlbase.h 内の空のメソッド CAtlServiceModuleT::OnInterrogate をオーバーライドし、サービスに問い合わせます。 |
SERVICE_CONTROL_SHUTDOWN |
ユーザー実装です。 atlbase.h 内の空のメソッド CAtlServiceModuleT::OnShutdown をオーバーライドし、サービスをシャットダウンします。 |
オペレーション コードが認識されない場合は、CAtlServiceModuleT::OnUnknownRequest メソッドが呼び出されます。
ATL が生成した既定のサービスは、停止命令だけを処理します。 SCM が停止命令を渡すと、サービスは SCM にプログラムが間もなく停止することを通知します。 次に、サービスは PostThreadMessage を呼び出し、サービス自体に終了メッセージを送信します。 これによってメッセージ ループが終了し、サービスが最終的に終了します。
必要条件
**ヘッダー:**atlbase.h