MAPIInitialize

適用対象: Outlook 2013 | Outlook 2016

MAPI サブシステム参照数をインクリメントし、MAPI DLL のグローバル データを初期化します。

プロパティ
ヘッダー ファイル:
Mapix.h
実装元:
MAPI
呼び出し元:
クライアント アプリケーション
HRESULT MAPIInitialize(
  LPVOID lpMapiInit
);

パラメーター

lpMapiInit

[in] MAPIINIT_0 構造体へのポインター。 lpMapiInit パラメーターは NULL に設定できます。

戻り値

S_OK

MAPI サブシステムが正常に初期化されました。

注釈

MAPIInitialize 関数は MAPI サブシステムの MAPI 参照カウントをインクリメントし、MAPIUninitialize 関数は内部参照カウントをデクリメントします。 したがって、1 つの関数の呼び出しの数は、もう一方の関数の呼び出しの数と等しい必要があります。 MAPIInitialize は、MAPI が以前に初期化されていない場合にS_OKを返します。

クライアントまたはサービス プロバイダーは、他の MAPI 呼び出しを行う前に MAPIInitialize を呼び出す必要があります。 そうしないと、クライアントまたはサービス プロバイダーの呼び出しでMAPI_E_NOT_INITIALIZED値が返されます。

マルチスレッド アプリケーションから MAPIInitialize を呼び出す場合は、 lpMapiInit パラメーターを、次のように宣言されている MAPIINIT_0 構造体に設定します。

MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}

と を呼び出します。

MAPIInitialize (&MAPIINIT);

この構造体が宣言されると、MAPI は通知ウィンドウを処理する別のスレッドを作成します。これは、初期化参照カウントが 0 になるまで続きます。 Windows サービスでは、lpMapiInit が指すMAPIINIT_0構造体の ulflags メンバーをMAPI_NT_SERVICEに設定する必要があります。

注:

Win32 DllMain 関数またはスレッドを作成または終了する他の関数内から MAPIInitialize または MAPIUninitialize を呼び出すことはできません。 詳細については、「 Thread-Safe オブジェクトの使用」を参照してください。

MAPIInitialize は、拡張エラー情報を返しません。 他のほとんどの MAPI 呼び出しとは異なり、戻り値の意味は、失敗した初期化の特定の手順に対応するように厳密に定義されています。

  1. パラメーターとフラグをチェックします。

    MAPI_E_INVALID_PARAMETERまたはMAPI_E_UNKNOWN_FLAGS。 呼び出し元が無効なパラメーターまたはフラグを渡しました。

  2. MAPI で必要なレジストリ キーを初期化し、オペレーティング システムの種類を確認します。 この手順は、クライアント プロセスが Windows でサービスとして実行され、 MAPIINIT_0構造で MAPI_NT SERVICE フラグを設定する場合にのみ発生します。

    MAPI_E_TOO_COMPLEX。 呼び出し元のプロセスは Windows サービスであり、MAPI で必要なレジストリ キーを初期化できませんでした。

    追加情報は、アプリケーション イベント ログで入手できます。

  3. MAPI と OLE の互換性を確認し、OLE を初期化します。

  4. OLE と MAPI の現在のバージョン間の互換性を確認します。

    MAPI_E_VERSION。 ワークステーションにインストールされている OLE のバージョンは、このバージョンの MAPI と互換性がありません。

  5. OLE を初期化します。

    この手順でのみ、この関数はここに記載されていないエラー コードを返すことができます。 ここに記載 されていない エラーは、OLE 関数 CoInitialize から発生するものと想定する必要があります。

  6. プロセスごとのグローバル変数を初期化します。

    MAPI_E_SESSION_LIMIT。 MAPI は、現在のプロセスに固有のコンテキストを設定します。 Win16 では、プロセスの数が特定の数を超えた場合、または使用可能なメモリが不足している場合は任意のシステムでエラーが発生する可能性があります。

  7. すべてのプロセスの共有グローバル変数を初期化します。

    MAPI_E_NOT_ENOUGH_RESOURCES。 操作を完了するのに十分なシステム リソースが利用できませんでした。

  8. 通知エンジンを初期化し、MAPI_MULTITHREAD_NOTIFICATIONS フラグによって要求された場合は、そのウィンドウとそのスレッドを作成します。

    MAPI_E_INVALID_OBJECT。 システム リソースが使い果たされると失敗する可能性があります。

  9. プロファイル プロバイダーを読み込んで初期化します。 MAPIInitialize が、プロファイル データが格納されているレジストリ キーにアクセスできることを確認します。

    MAPI_E_NOT_INITIALIZED。 プロファイル プロバイダーでエラーが発生しました。

MFCMAPI リファレンス

MFCMAPI のサンプル コードについては、次の表を参照してください。

ファイル 関数 コメント
ContentsTableListCtrl.cpp
MFCMAPI では 、MAPIInitialize メソッドを使用して、バックグラウンド スレッドで MAPI を初期化し、テーブル処理を実行します。

関連項目

[�R��h �T���v���Ƃ��� MFCMAPI