MAPI サービス プロバイダー
適用対象: Outlook 2013 | Outlook 2016
サービス プロバイダーには、次の 3 つの一般的な種類があります。
アドレス帳プロバイダー。
メッセージ ストア プロバイダー。
トランスポート プロバイダー。
アドレス帳とメッセージ ストア プロバイダーには、多くの類似点があります。 オブジェクトのエントリ識別子を構築するために使用する MAPI に一意の識別子を登録します。 これらは、クライアントがアクセスして操作できるオブジェクトとプロパティの階層を提供します。 コンテナー オブジェクトでは、階層テーブルとコンテンツ テーブルがサポートされます。 これらのテーブルおよび必要に応じて個々のオブジェクトに対するイベント通知をサポートするため、クライアントはセッション中に発生した変更を通知できます。 操作が長くなると、進行状況インジケーターを表示して、操作の状態をユーザーに通知できます。 クライアントは、 IAddrBook : IMAPIProp および IMAPISession : IUnknown インターフェイスを使用するか、次の表のいずれかのサービス プロバイダー インターフェイスを使用して、MAPI を介して間接的にアドレス帳およびメッセージ ストア プロバイダーと通信できます。
アドレス帳プロバイダー インターフェイス | メッセージ ストア プロバイダー インターフェイス |
---|---|
IABContainer : IMAPIContainer |
IMsgStore: IMAPIProp |
IDistList : IMAPIContainer |
IMAPIFolder : IMAPIContainer |
IMailUser : IMAPIProp |
IMessage: IMAPIProp |
IAttach : IMAPIProp |
トランスポート プロバイダーは、MAPI とクライアントとの通信方法でアドレス帳およびメッセージ ストア プロバイダーとは異なります。 トランスポート プロバイダーは、通常、MAPI が通信を開始するのではなく、情報の入力を求めるのを待ちます。 他のプロバイダーとは異なり、トランスポート プロバイダーは、クライアントによって一般的にアクセスされるさまざまなオブジェクトとテーブルをサポートしていません。 ただし、すべてのサービス プロバイダーと同様に、状態オブジェクトをサポートし、そのプロパティを状態テーブルに発行します。 アドレス帳とメッセージ ストア プロバイダーは IMAPISupport::SetProviderUID メソッドを呼び出してエントリ識別子を構築するための一意の識別子を登録しますが、トランスポート プロバイダーは IXPLogon::AddressTypes メソッドを呼び出して一意の識別子を登録し、特定のメッセージの配信の責任を引き受けるアドレスの種類も呼び出します。
サービス プロバイダーには、1 つのパブリック ヘッダー ファイルと 2 つの内部ファイルという 3 つのヘッダー ファイルが必要です。 構成とプロパティとその値の文書化には、パブリック ヘッダー ファイルを使用します。 内部ヘッダー ファイルの 1 つに、必要なすべてのパブリック MAPI ヘッダーを含めます。このヘッダー ファイルは、すべてのサービス プロバイダー ソース ファイルに含める必要があります。 リソース識別子を定義するには、他の内部ファイルを使用します。
アドレス帳、メッセージ ストア、およびトランスポート プロバイダーは、次のタスクを実行します。
エントリ ポイント関数を指定します。
ログオンと初期化を処理するプロバイダーとログオン オブジェクトを指定します。
プロバイダーがメッセージ サービスに属している場合は、メッセージ サービス エントリ ポイント関数を指定します。
プロパティ シートを実装して構成をサポートします。
状態オブジェクトを実装し、状態テーブルをサポートします。
ハンドルをシャットダウンします。