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

適用対象: Outlook 2013 | Outlook 2016

プロバイダーがメッセージ ストア プロバイダーの場合は、次のいずれかの方法でシャットダウンできます。

  • クライアントまたは MAPI スプーラーが IMsgStore::StoreLogoff を呼び出す場合。 StoreLogoff を使用してメッセージ ストア プロバイダーをシャットダウンすると、シャットダウンが順序よく制御された方法で実行されます。

  • クライアントが IMAPISession::Logoff を呼び出す場合。

IMsgStore::StoreLogoff の実装は、まず IMAPISupport::StoreLogoffTransports を呼び出して、MAPI がシャットダウンされていることを通知し、関連するトランスポート プロバイダーをログオフする必要があることを示します。 IMsgStore::StoreLogoff が返されると、その呼び出し元からメッセージ ストアの IUnknown::Release メソッドが呼び出されます。 サポート オブジェクトの IUnknown::Release メソッドを呼び出して、この Release メソッドを実装します。

MAPI は、メッセージ ストアの IUnknown::Release の実装で次のタスクを実行します。

  1. メッセージ ストア プロバイダーによって登録されているすべての MAPIUID 構造体を削除します。

  2. メッセージ ストア プロバイダーの行を状態テーブルから削除します。

  3. IMSLogon::Logoff を呼び出して、開いているすべてのオブジェクト、サブオブジェクト、および状態オブジェクトを解放します。

  4. IUnknown::Release を呼び出して、メッセージ ストア プロバイダーのログオン オブジェクトを解放します。

一部のクライアントは IMsgStore::StoreLogoff の呼び出しを省略し、メッセージ ストアの IUnknown::Release メソッドの呼び出しでメッセージ ストア プロバイダーのシャットダウンを開始する場合があります。 このような状況では、 StoreLogoff を呼び出さずにシャットダウンすることは、順序が低く制御されます。 メッセージ ストアの Release メソッドを記述してこの可能性を処理し、 IMAPISupport::StoreLogoffTransports の呼び出しが発生したかどうかを追跡します。 StoreLogoffTransports は、シャットダウン プロセス中に 1 回呼び出す必要があります。 StoreLogoffTransports がまだ呼び出されていないことを Release メソッドで検出した場合は、LOGOFF_ABORT フラグを使用して呼び出します。

関連項目

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