サービス プロバイダーの一意識別子の登録

適用対象: Outlook 2013 | Outlook 2016

アドレス帳、メッセージ ストア、およびトランスポート プロバイダーは、 MAPIUID と呼ばれる一意の識別子を使用して、さまざまな種類のサービス オブジェクトに登録します。 MAPIUID は、GUID を含む 16 バイトの識別子です。 MAPIUID は、次の手順で作成できます。

  1. 定数を定義します。

  2. Visual Studio*GUID の作成** ツールを呼び出します。

たとえば、アドレス帳プロバイダーは、 MAPIUID を定義するヘッダー ファイルに次の定数を含めることができます。

#define AB_UID_PROVIDER { 0Xe3, 0x3c, 0x67, 0xa0, \ 0xc8, 0x1f, 0x11, 0xce, \ 0xb2, 0xe4, 0x0, 0xaa, \ 0x0, 0x51, 0xe, 0x3b }

プロバイダーがアドレス帳またはメッセージ ストア プロバイダーの場合に MAPIUID を登録するには

  1. IMAPISupport::SetProviderUID を呼び出します。

  2. インスタンス化するログオン オブジェクトごとに MAPIUID を登録し、作成するすべてのエントリ識別子の ab メンバーの最初の 16 バイトにこの MAPIUID を含めます。 MAPI では 、MAPIUID 構造体を使用して、オブジェクトをサービス プロバイダーに関連付けます。 クライアントが IMAPISession::OpenEntry メソッドを呼び出してオブジェクトを開くと、MAPI はエントリ識別子の MAPIUID 部分を調べ、登録されている MAPIUID と照合して、開いている要求を受け取るログオン オブジェクトを決定します。

  3. プロバイダーがトランスポートの場合は、MAPI が IXPLogon::AddressTypes メソッドを呼び出すときに、1 つ以上の MAPIUID 構造体を登録します。 MAPI では、トランスポート プロバイダーによって登録された MAPIUID 構造体を使用して、メッセージ配信の責任を割り当てます。

サービス プロバイダーは通常、1 つの MAPIUID を登録しますが、複数の MAPIUID 構造体を登録できます。 アドレス帳またはメッセージ ストア プロバイダーが複数のログオン オブジェクトをサポートしている場合 (ユーザーがプロバイダーの複数のインスタンスをプロファイルに追加できるようにする場合など)、ログオン オブジェクトごとに異なる MAPIUID を実装できます。 複数の MAPIUID をサポートするには、他にもいくつかの理由があります。

  • プロバイダーの複数のバージョンをサポートする必要があり、エントリ識別子は適切なバージョンを表す必要があります。 バージョンごとに異なる MAPIUID を割り当てます。

  • サポートするオブジェクトの種類を区別する必要があります。 たとえば、アドレス帳プロバイダーは、メッセージング ユーザー オブジェクトのエントリ識別子で使用する 1 つの MAPIUID と、配布リストに使用する別の MAPIUID を登録する場合があります。

同時にアクティブなログオン オブジェクトが複数ある場合は、それぞれに一意の MAPIUID 構造体を設定することをお勧めします。 これにより、MAPI がエントリ識別子をサービス プロバイダーに一致させる精度が向上し、作業が保存されます。 すべてのログオン オブジェクトに独自の一意識別子がある場合、MAPI は、ログオン オブジェクトにルーティングするすべての要求を、そのオブジェクトによって処理できることを保証できます。 ログオン オブジェクトが MAPIUID 構造体を共有する場合、MAPI は MAPIUID によって識別される最初のログオン オブジェクトに要求をルーティングします。 いずれかのログオン オブジェクトが、エントリ識別子を処理しないために処理できない要求を受け取る場合は、エラーを返す前に、次のログオン オブジェクトに要求を渡します。

関連項目

サービス プロバイダー ログオンの実装