サーバー プロセス (Dllhost.exe) の起動時に初期化コードを実行する必要がある場合や、サーバー プロセスの終了時に終了コードを実行する必要がある場合は、サービス コンポーネントに IProcessInitializer インターフェイス メソッドを実装します。
COM+ は、Dllhost.exe の起動時に Startup イベントを発生させ、Dllhost.exe の終了時に Shutdown イベントを発生させます。この機能により、COM+ サーバー アプリケーション (以下、「サーバー コンポーネント」とします) 内にインストールされた任意の COM+ コンポーネントが、初期化やクリーンアップのためのカスタム コードを実行することが可能になります。IProcessInitializer インターフェイスを実装する各コンポーネントのインスタンスは、プロセスの存続期間中に作成されて保存され、起動および終了の処理中にそのインターフェイス メソッドが呼び出されます。ServicedComponent に実装した場合、コンポーネントの登録中に、Components コレクション内の COMAdminCatalogObject の InitializesServerApplication パラメータが true に設定されます。
Startup イベントと Shutdown イベントを使用すると、リソースの初期化、接続の作成、共有データの初期化、およびクリーンアップ コードを実行できます。ただし、サーバー コンポーネントのインスタンスはまだ作成されていないため、COM+ の特定の状態にはアクセスしないでください。さらに、システムはプロセスを起動した後 Dllhost.exe がアクティベーションを受け入れる準備を終えるまでに 90 秒間しか待たないため、Startup イベントと Shutdown イベントのコードは可能な限りすばやく制御を返す必要があります。Dllhost.exe が 90 秒以内に準備が整ったことを通知しないと、システムがプロセスを終了させるため、すべての初期化処理をこの時間内に完了させる必要があります。初期化に参加する各サーバー コンポーネントが、IProcessInitializer インターフェイスをサポートする必要があります。DllHost.exe の起動時には、COM+ は、このサービスを要求したすべてのサーバー コンポーネントを作成し、IProcessInitializer インターフェイスの QueryInterface を呼び出し、Startup 関数を呼び出します。同様に、DllHost.exe プロセスの終了時には、これらの以前に格納したインターフェイスのポインタで Shutdown 関数を呼び出します。