印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Win32 および COM 開発
Windows ベース サービス
SDK ドキュメント
DLL/プロセス/スレッド
サービス
リファレンス
関数
 Handler 関数
プラットフォーム SDK
Handler

RegisterServiceCtrlHandler 関数と組み合わせて使う、アプリケーション定義の関数です。サービスプログラムは、Handler 関数を特定のサービスアプリケーションの制御ハンドラ関数として使います。この関数へのポインタとして LPHANDLER_FUNCTION 型が定義されています。Handler は、アプリケーション定義の関数名のプレースホルダです。

制御ハンドラ関数 HandlerExHandler 関数の改訂版であり、RegisterServiceCtrlHandlerEx 関数と組み合わせて使います。サービスはどちらの制御ハンドラを利用してもかまいませんが、新しい制御ハンドラ関数 HandlerEx はユーザー定義のコンテキストデータと追加の拡張制御コードもサポートしています。

VOID WINAPI Handler(
  DWORD fdwControl   // 要求したい制御コード
);

パラメータ

fdwControl
[入力]要求された制御コードが入ります。この値は、次のいずれかの制御コードになります。
制御コード 意味
SERVICE_CONTROL_STOP サービスを停止するよう要求します。
SERVICE_CONTROL_PAUSE サービスを一時停止するよう要求します。
SERVICE_CONTROL_CONTINUE 一時停止されているサービスを再開するよう要求します。
SERVICE_CONTROL_INTERROGATE サービスが自らの現在のステータス情報をサービス制御マネージャへ伝えて、情報を即座に更新するよう要求します。
SERVICE_CONTROL_SHUTDOWN システムをシャットダウン中のため、クリーンアップ作業を行うようサービスに要求します。

詳細については、「解説」を参照してください。

SERVICE_CONTROL_PARAMCHANGE Windows 2000サービス固有の起動パラメータが変更されたことをサービスへ通知します。サービスは自らの起動パラメータを再度読み込む必要があります。

サービスには、SERVICE_PAUSE_CONTINUE アクセス権が必要です。

SERVICE_CONTROL_NETBINDADD Windows 2000バインドするべき新しいコンポーネントが存在することをネットワークサービスへ通知します。この新しいコンポーネントへこのサービスをバインドする必要があります。

サービスには SERVICE_PAUSE_CONTINUE アクセス権が必要です。

SERVICE_CONTROL_NETBINDREMOVE Windows 2000バインドが削除されたコンポーネントが存在することをネットワークサービスへ通知します。サービスは自らのバインド情報を再度読み込み、削除されたコンポーネントをアンバインドする必要があります。

サービスには SERVICE_PAUSE_CONTINUE アクセス権が必要です。

SERVICE_CONTROL_NETBINDENABLE Windows 2000使用不能だったバインドが使用可能になったことをネットワークサービスへ通知します。サービスは自らのバインド情報を再度読み込み、新しいバインドを追加する必要があります。

サービスには SERVICE_PAUSE_CONTINUE アクセス権が必要です。

SERVICE_CONTROL_NETBINDDISABLE Windows 2000バインドのいずれかが使用不能になったことをネットワークサービスへ通知します。サービスは自らのバインド情報を再度読み込み、使用不能になったバインドを削除する必要があります。

サービスには SERVICE_PAUSE_CONTINUE アクセス権が必要です。


この値は、次に示すユーザー定義の制御コードであってもかまいません。

制御コード 意味
128255 の範囲 サービスは、制御コードに関連付けられる操作を定義します。hService ハンドルには、SERVICE_USER_DEFINED_CONTROL アクセス権が必要です。

戻り値

戻り値はありません。

解説

サービスアプリケーションが開始された直後に、そのアプリケーションの ServiceMain 関数は RegisterServiceCtrlHandler 関数を呼び出して、制御の要求を処理するための Handler 関数を指定しなければなりません。
サービスアプリケーションプロセスのメインスレッド内の制御ディスパッチャは、サービス制御マネージャから制御の要求を受け取ると、指定されたサービスに対応する制御ハンドラ関数を呼び出します。制御の要求を処理した後で、制御ハンドラは SetServiceStatus 関数を呼び出して、自らのステータスをサービス制御マネージャへ報告しなければなりません。

SERVICE_CONTROL_SHUTDOWN 制御コードは、シャットダウンの作業中にクリーンアップを必ず終えることができるサービスを使って処理しなければなりません。サービスのシャットダウンに利用できる時間は非常に限られている(約 20 秒)からです。この時間が経過すると、サービスのシャットダウンが完了したかどうかにかかわりなく、システムのシャットダウンが進行するからです。サービスをシャットダウンさせるためにより多くの時間が必要な場合、そのサービスは待機時間のヒントとともに STOP_PENDING ステータスメッセージを送信する必要があります。その結果、サービスコントローラは、サービスのシャットダウンが完了したとシステムへ通知する前に、どれだけの時間待機すればよいのかを把握することができます。たとえば、システムがシャットダウン作業を行っている間はネットワーク接続を確立できないので、サーバーサービスをシャットダウンする必要があります。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:対応していません
Windows CE:対応していません
ヘッダー:winsvc.h 内で宣言
インポートライブラリ:ユーザー定義

参照

HandlerExRegisterServiceCtrlHandlerServiceMainSetServiceStatus

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker