サービス プロバイダーのシャットダウン

適用対象: Outlook 2013 | Outlook 2016

クライアントが IMAPISession::Logoff メソッドを呼び出してセッションを終了し、アクティブなすべてのサービス プロバイダーをシャットダウンすると、MAPI は次のメソッドを呼び出します。

これらのメソッドにも同様の実装があります。 ログオフ メソッドが実行するメイン タスクは次のとおりです。

  • サブオブジェクトやステータス オブジェクトを含む、開いているすべてのオブジェクトを解放します。

  • サポート オブジェクトの IUnknown::Release メソッドを呼び出して、参照カウントを減らします。

  • プロバイダーに登録されているすべての MAPIUID 構造体を削除します。

  • 状態テーブル内のプロバイダーの行を削除します。

  • 次のようなリソースのクリーンアップに関連するすべてのタスクを実行します。

    • リモート サーバーとの接続を終了する。

    • ログオン オブジェクトの参照カウントを減らします。

    • プロバイダーが格納するログオン オブジェクトの一覧からログオン オブジェクトを削除します。

    • デバッグ モードで、メモリがリークされたオブジェクトを見つけるためにトレースを発行します。

ログオフ メソッドが返されると、MAPI は次を呼び出します。

  • ログオン オブジェクトの IUnknown::Release メソッド。

  • プロバイダー オブジェクトの Shutdown メソッドを使用して、最終的なクリーンアップ タスクを実行します。 プロバイダーの種類に応じて、次のいずれかのメソッドが呼び出されます。

    • IABProvider:: アドレス帳プロバイダーのシャットダウン

    • IMSProvider:: メッセージ・ストア・プロバイダーのシャットダウン

    • IXPProvider:: トランスポート プロバイダーのシャットダウン

  • プロバイダー オブジェクトの IUnknown::Release メソッド。

プロバイダーがメッセージ ストアの場合、 IMsgStore::StoreLogoff へのクライアント呼び出しによってシャットダウン プロセスも開始されます。 StoreLogoff は、1 つの特定のメッセージ ストア プロバイダーをシャットダウンし、セッションには影響しません。 このメソッドを使用してシャットダウンできるのは、メッセージ ストア プロバイダーだけです。特定のアドレス帳またはトランスポート プロバイダーをシャットダウンする明示的な方法はありません。 StoreLogoff 呼び出しに応答する方法については、「メッセージ ストア プロバイダーのシャットダウン」を参照してください。

MAPI が Win32 API 関数 FreeLibrary を呼び出すと、プロバイダーの DLL がアンロードされます。これは、最後のアクティブなクライアントが MAPIUninitialize を呼び出した後に行われる呼び出しです。 この時点で、サービス プロバイダーのシャットダウンが完了します。

関連項目

MAPI サービス プロバイダー