MAPI セッションの終了
適用対象: Outlook 2013 | Outlook 2016
クライアントは、すべての送信メッセージが処理された直後または後、重大なエラーが発生した場合に、ユーザーの要求に応答してセッションを終了できます。 一部のクライアントは、保留中の送信メッセージがトランスポート プロバイダーと宛先メッセージング システムに到達できるように、ログオンを維持する必要があります。 このようなクライアントがメッセージを送信し、すぐにログオフした場合、ユーザーがログオンし、メッセージが送信されるのに十分な長さになるまで、メッセージは送信キューに残る可能性があります。
MAPI サブシステムとのセッションを終了する必要がある場合
登録されているすべてのオブジェクトの Unadvise メソッドを呼び出して、すべての通知の登録を取り消します。
IUnknown::Release メソッドを呼び出して、開いているすべてのオブジェクトを解放します。 開いているオブジェクトの種類には、アドバイズ シンク、状態テーブル、送信トレイ フォルダー、1 つ以上のメッセージ ストア、アドレス帳を含めることができます。
MAPIFreeBuffer を呼び出して、PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId) などのキャッシュされたエントリ識別子のメモリを解放します。
IMAPISession::Logoff を呼び出し、ユーザー インターフェイスを許可する場合は MAPI_LOGOFF_UI フラグを設定し、現在の共有セッションを所有している場合は MAPI_LOGOFF_SHARED フラグを設定します。 ログオフ は、現在の共有セッションを使用している他のすべてのクライアントに、エラー通知を送信してログオフする必要があることを通知します。
セッションの IUnknown::Release メソッドを呼び出して、セッション ポインターを解放します。
セッションの起動時 に OleInitialize を呼び出して OLE ライブラリを初期化した場合は、 OleUninitialize を呼び出して、それらを今すぐ初期化解除します。 OleInitialize を呼び出したクライアントのみが OleUninitialize を呼び出す必要があります。
MAPIUninitialize を呼び出して MAPI ライブラリを初期化解除します。 ある時点で OleInitialize を呼び出した場合は、 MAPIUninitialize へのこの呼び出しの前に OleUninitialize の呼び出しが行われることを確認してください。 タイミングが重要です。 OLEUninitialize の呼び出しが MAPIUninitialize の呼び出しに続く場合、クライアントが正常に終了する可能性があります。
セッションの起動時に ScInitMapiUtil を 呼び出して MAPI ユーティリティ ライブラリを初期化した場合は、 DeinitMapiUtil を呼び出して初期化を解除します。 ScInitMapiUtil を呼び出したクライアントのみが DeinitMapiUtil を呼び出す必要があります。
注:
IMAPISession::Logoff を呼び出す前に、開いているすべてのオブジェクトを解放する必要があります。 ログオフが呼び出された後も開いたままのオブジェクトは無効になります。呼び出しを受け入れることができないため、解放されることはありません。 これらのオブジェクトのいずれかに対して呼び出しが行われた場合は、呼び出しが失敗することを想定します。
MAPI には、セッションのシャットダウン プロセス中に DLL を削除するためのメカニズムがありません。 サービス プロバイダーの DLL は、コントロール パネルなどの構成クライアントがメッセージ サービス エントリ ポイント関数を MSG_SERVICE_INSTALL イベントと共に呼び出した場合にのみ削除できます。