MAPI セッションを終了Ending a MAPI Session

適用されます: OutlookApplies to: Outlook

クライアントがセッションを終了、ユーザーの要求への応答としてか、すぐにしたり、すべての送信メッセージが処理されると、重大なエラーが発生したとき。Clients can end their sessions in response to a user's request, either immediately or after all outbound messages have been processed, and when a critical error occurs. 常にクライアントが必要であるは、保留中のメッセージを送信するトランスポート プロバイダーにアクセスできるようにし、送信先のメッセージング システムにログオンします。Some clients need to stay logged on so that pending outbound messages can reach the transport provider and the destination messaging system. 場合は、このようなクライアントは、メッセージを送信し、すぐにログオフ、メッセージは、ユーザーが再びログオンし、ログオンしているメッセージを送信するのに十分な時間のままになるまで送信キューに残ることがあります。If such a client sends a message and immediately logs off, the message may remain in the outgoing queue until a user logs back on and stays logged on long enough for the message to be transmitted.

MAPI のサブシステムとのセッションを終了する必要がある場合When you need to terminate your session with the MAPI subsystem

  1. 登録済みのすべてのオブジェクトのUnadviseメソッドを呼び出して、すべての通知の登録をキャンセルします。Cancel the registrations for all notifications by calling the Unadvise method of every registered object.

  2. メソッドを呼び出すことによって開かれているすべてのオブジェクトを解放します。Release all open objects by calling their IUnknown::Release methods. 開くオブジェクトの種類を含めることができますシンク、状態テーブル、[送信トレイ] フォルダー、1 つまたは複数のメッセージ ・ ストア、およびアドレス帳に案内します。The types of open objects can include advise sinks, the status table, the Outbox folder, one or more message stores, and the address book.

  3. PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId) などのすべてのキャッシュされたエントリ識別子にメモリを解放するMAPIFreeBufferを呼び出します。Call MAPIFreeBuffer to free the memory for any cached entry identifiers, such as PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId).

  4. IMAPISession::Logoff、MAPI_LOGOFF_UI フラグを設定して、現在の共有セッションを所有している場合、ユーザー インターフェイスと MAPI_LOGOFF_SHARED フラグを許可する場合に呼び出します。Call IMAPISession::Logoff, setting the MAPI_LOGOFF_UI flag if you allow a user interface and the MAPI_LOGOFF_SHARED flag if you own the current shared session. エラー通知を送信し、ログオフする必要がありますが現在の共有セッションを使用している他のすべてのクライアントをログオフ時に通知します。Logoff notifies all other clients that are using the current shared session that they should log off by sending an error notification.

  5. セッションのリ スのメソッドを呼び出すことによってセッションのポインターを解放します。Release the session pointer by calling the session's IUnknown::Release method.

  6. OleInitializeを呼び出すと、OLE ライブラリを初期化するためにセッションの起動中に、初期化前の状態に今すぐOleUninitializeを呼び出すことによって。If you called OleInitialize during session startup to initialize the OLE libraries, uninitialize them now by calling OleUninitialize. OleInitializeを呼び出したクライアントだけでは、 OleUninitializeを呼び出す必要があります。Only clients that have called OleInitialize must call OleUninitialize.

  7. MAPIUninitializeを呼び出すことによって、MAPI ライブラリの初期化を解除します。Uninitialize the MAPI libraries by calling MAPIUninitialize. OleInitializeを呼び出すと、いくつかの時点で、 MAPIUninitializeをこの呼び出しの前にOleUninitializeへの呼び出しが発生することを確認します。If you called OleInitialize at some point, make sure that a call to OleUninitialize occurs before this call to MAPIUninitialize. タイミングが重要です。The timing is crucial. OleUninitializeへの呼び出しにMAPIUninitializeへの呼び出しが発生する場合、クライアント可能性があります突然終了します。If the call to OleUninitialize follows the call to MAPIUninitialize, your client might terminate ungracefully.

  8. MAPI ユーティリティ ライブラリを初期化するためにセッションの起動中にScInitMapiUtilを呼び出すと、 DeinitMapiUtilを呼び出すことによってこれで初期化します。If you called ScInitMapiUtil during session startup to initialize the MAPI utility library, uninitialize it now by calling DeinitMapiUtil. 呼ばれるScInitMapiUtilを持つクライアントだけでは、 DeinitMapiUtilを呼び出す必要があります。Only clients that have called ScInitMapiUtil must call DeinitMapiUtil.


IMAPISession::Logoff呼び出しの前に、開いているすべてのオブジェクトを解放する必要があります。All open objects must be released before the call to IMAPISession::Logoff. Logoffを呼び出すと後に開いているオブジェクトに無効です。すべての呼び出しを受け付けることができませんし、解放されない可能性があります。Objects that remain open after Logoff is called become invalid; they cannot accept any calls and might never be freed. 呼び出しされた場合にこれらのオブジェクトのいずれか、エラーが発生する呼び出しを期待してください。If a call is made to one of these objects, expect the call to fail.

MAPI には、セッションのシャット ダウン処理中に Dll を削除するためのメカニズムはありません。MAPI has no mechanism for deleting DLLs during the session shutdown process. サービス プロバイダーの DLL は、コントロール パネルなどの構成のクライアント関数を呼び出すと、メッセージ サービス エントリ ポイント MSG_SERVICE_INSTALL イベントにのみ削除できます。A service provider's DLL can only be deleted when a configuration client such as the Control Panel calls its message service entry point function with the MSG_SERVICE_INSTALL event.