CAtlServiceModuleT::ServiceMain 関数
(SCM) サービス コントロール マネージャーはサービスのコントロール パネルのアプリケーションを開き、サービスを選択し、を **[開始]**をクリックすると ServiceMain を呼び出します。
SCM が ServiceMainを呼び出した後、サービスは SCM にハンドラー関数を付ける必要があります。この関数は SCM がサービスの状態を取得し、特定の命令を渡すようにします (一時停止、停止など)。SCM は、Win32 API の関数にこの関数を時サービス パス _Handler、RegisterServiceCtrlHandler取得します。(_Handler は静的でないメンバー関数を呼び出す [ハンドラー]静的メンバー関数です)。
起動時に、サービスは、状態を SCM に通知する必要があります。このクラスは Win32 API 関数に SERVICE_START_PENDING 渡すことによってこれを、SetServiceStatusを説明します。
ServiceMain は、CAtlExeModuleT::InitializeComを呼び出し、Win32 API 関数 CoInitializeExを呼び出す。既定では、InitializeCom は、関数に COINIT_MULTITHREADED のフラグを渡します。このフラグは、プログラムでフリー スレッド サーバーであることを示します。
次に、CAtlServiceModuleT::Run は、サービスの主要な処理を実行するために呼び出されます。[実行] は、サービスを停止するまで継続します。