サービス プロバイダーのシャットダウン
適用対象: Outlook 2013 | Outlook 2016
クライアントが IMAPISession::Logoff メソッドを呼び出してセッションを終了し、アクティブなすべてのサービス プロバイダーをシャットダウンすると、MAPI は次のメソッドを呼び出します。
メッセージ ストア プロバイダーの IMSLogon::Logoff。
トランスポート プロバイダーの IXPLogon::TransportLogoff。
これらのメソッドにも同様の実装があります。 ログオフ メソッドが実行するメイン タスクは次のとおりです。
サブオブジェクトやステータス オブジェクトを含む、開いているすべてのオブジェクトを解放します。
サポート オブジェクトの IUnknown::Release メソッドを呼び出して、参照カウントを減らします。
プロバイダーに登録されているすべての MAPIUID 構造体を削除します。
状態テーブル内のプロバイダーの行を削除します。
次のようなリソースのクリーンアップに関連するすべてのタスクを実行します。
リモート サーバーとの接続を終了する。
ログオン オブジェクトの参照カウントを減らします。
プロバイダーが格納するログオン オブジェクトの一覧からログオン オブジェクトを削除します。
デバッグ モードで、メモリがリークされたオブジェクトを見つけるためにトレースを発行します。
ログオフ メソッドが返されると、MAPI は次を呼び出します。
ログオン オブジェクトの IUnknown::Release メソッド。
プロバイダー オブジェクトの Shutdown メソッドを使用して、最終的なクリーンアップ タスクを実行します。 プロバイダーの種類に応じて、次のいずれかのメソッドが呼び出されます。
IABProvider:: アドレス帳プロバイダーのシャットダウン
IMSProvider:: メッセージ・ストア・プロバイダーのシャットダウン
IXPProvider:: トランスポート プロバイダーのシャットダウン
プロバイダー オブジェクトの IUnknown::Release メソッド。
プロバイダーがメッセージ ストアの場合、 IMsgStore::StoreLogoff へのクライアント呼び出しによってシャットダウン プロセスも開始されます。 StoreLogoff は、1 つの特定のメッセージ ストア プロバイダーをシャットダウンし、セッションには影響しません。 このメソッドを使用してシャットダウンできるのは、メッセージ ストア プロバイダーだけです。特定のアドレス帳またはトランスポート プロバイダーをシャットダウンする明示的な方法はありません。 StoreLogoff 呼び出しに応答する方法については、「メッセージ ストア プロバイダーのシャットダウン」を参照してください。
MAPI が Win32 API 関数 FreeLibrary を呼び出すと、プロバイダーの DLL がアンロードされます。これは、最後のアクティブなクライアントが MAPIUninitialize を呼び出した後に行われる呼び出しです。 この時点で、サービス プロバイダーのシャットダウンが完了します。