サービス プロバイダー エントリ ポイント関数の実装

適用対象: Outlook 2013 | Outlook 2016

すべてのサービス プロバイダー DLL には、MAPI が呼び出して読み込むエントリ ポイント関数があります。 このエントリ ポイント関数は、Win32 DLL エントリ ポイント関数である DllMain と同じではないことに注意してください。

プロバイダーの種類に応じて、プロバイダー エントリ ポイント関数は別のプロトタイプに準拠します。 MAPI は、サービス プロバイダーのさまざまなエントリ ポイント関数プロトタイプを定義します。

Provider エントリ ポイント関数プロトタイプ
メッセージ ストア プロバイダー
MSProviderInit
トランスポート プロバイダー
XPProviderInit
アドレス帳プロバイダー
ABProviderInit

これらのプロトタイプの機能の多くは、すべてのサービス プロバイダーの種類で同じです。

アドレス帳、メッセージ ストア、およびトランスポート プロバイダーは、エントリ ポイント関数で次の 2 つのメイン タスクを実行します。

  1. サービス プロバイダー インターフェイス (SPI) のバージョンを確認して、MAPI でサービス プロバイダーが使用しているバージョンと互換性のあるバージョンが使用されていることを確認します。 チェックを実行するには、MAPI SPI バージョンを含む lpulMAPIVer パラメーターと、SPI バージョンを含む lpulProviderVer パラメーターを使用します。 これらのパラメーターは、3 つの部分で構成される 32 ビット符号なし整数です。
  • ビット 24 から 31 はメジャー バージョンを表します。

  • ビット 16 から 23 はマイナー バージョンを表します。

  • ビット 0 から 15 は更新識別子を表します。 メジャー バージョン番号はほとんど変更されませんが、MAPI がリリースされ、SPI が変更されるたびにマイナー バージョン番号が変更されます。 更新識別子は、Microsoft の内部ビルド バージョンです。これは、開発プロセス中の変更を追跡するために使用されます。 MAPI は、mapispi.h ヘッダー ファイルに記載されているCURRENT_SPI_VERSION定数を定義して、現在の SPI バージョンを示します。 MAPI が使用しているバージョンよりも新しい SPI のバージョンを使用している場合は、エラー MAPI_E_VERSIONでチェックを失敗させます。

  1. プロバイダー オブジェクトのインスタンスを作成します。 プロバイダーは複数回起動および初期化できるため、これが発生するたびに新しいインスタンスを作成する必要があります。 プロバイダーは、1 つ以上のクライアントによって同時に使用されている複数のプロファイルに表示される場合、または 1 つのプロファイルに複数回表示される場合に複数回開始されます。 エントリ ポイント関数のプロトタイプがプロバイダーの種類によって異なるのと同様に、プロバイダー オブジェクトの種類も異なります。

    アドレス帳プロバイダーを記述する場合は、 IABProvider : IUnknown を実装します。 メッセージ ストア プロバイダーを記述する場合は、 IMSProvider : IUnknown を実装します。 詳細については、「 メッセージ ストア プロバイダーの読み込み」を参照してください。

    トランスポート プロバイダーを記述する場合は、 IXPProvider : IUnknown を実装します。 詳細については、「 トランスポート プロバイダーの初期化」を参照してください。

関連項目

サービス プロバイダーの開始