CAtlServiceModuleT::Run 関数

更新 : 2007 年 11 月

Run には PreMessageLoopRunMessageLoop、および PostMessageLoop の呼び出しが含まれます。PreMessageLoop は、呼び出されると、最初にサービスのスレッド ID を格納します。サービスは、終了時に Win32 API 関数 PostThreadMessageWM_QUIT メッセージを送信しますが、そのときにこのスレッド ID が使用されます。

次に、PreMessageLoopInitializeSecurity を呼び出します。既定では、InitializeSecurityCoInitializeSecurity を呼び出してセキュリティ記述子を NULL に設定します。つまり、どのユーザーでもオブジェクトにアクセスできるようにします。

サービスでセキュリティの設定をしない場合は、PreMessageLoop をオーバーライドして InitializeSecurity を呼び出しません。そうすると、COM がレジストリからセキュリティの設定を行います。レジストリの設定を行うには、後で説明する DCOMCNFG ユーティリティを使用すると便利です。

セキュリティを指定すると、新しいクライアントがプログラムにアクセスできるようにオブジェクトが COM に登録されます。最後に、プログラムは、実行中であることをサービス コントロール マネージャ (SCM: Service Control Manager) に通知し、メッセージ ループに入ります。プログラムは、サービスをシャットダウンするときに終了メッセージを出すまで、実行を継続します。

参照

参照

ATL サービス

CSecurityDesc クラス

CSid クラス

CDacl クラス

CAtlServiceModuleT::Run