プロバイダー One-Off テーブルの実装

適用対象: Outlook 2013 | Outlook 2016

MAPI は、クライアント アプリケーションのユーザーが受信者を送信メッセージに追加するときに、プロバイダーの IABLogon::GetOneOffTable メソッドを呼び出します。 通常、要求されるアドレスの種類はメッセージング システムに固有です。 プロバイダーが受信者の作成をサポートしている場合は、サポートされているすべての種類の受信者アドレスのテンプレートを公開する 1 回限りのテーブルを提供する必要があります。 プロバイダーが受信者の作成をサポートしていない場合は、 GetOneOffTable 呼び出しからMAPI_E_NO_SUPPORTを返します。

MAPI は通常、プロバイダーの 1 回限りのテーブルをセッションの有効期間中開いたままにし、クライアントがサブシステムまたはアドレス帳の IMAPIStatus::ValidateState メソッドを呼び出した場合にのみ解放します。 MAPI は、テンプレートが追加または削除された場合、これらの変更をユーザーに反映できるように、このテーブルの通知に登録します。

IABLogon::GetOneOffTable を実装するには

  1. flags パラメーター ulFlags の値を確認します。 MAPI_UNICODE フラグが設定されていて、プロバイダーが Unicode をサポートしていない場合は、失敗し、MAPI_E_BAD_CHARWIDTHを返します。

  2. プロバイダーの 1 回限りのテーブルが既に作成されているかどうかを確認します。 通常、1 回限りのテーブルは静的であるため、プロバイダーは作成プロセスを複数回実行する必要はありません。 テーブルが既に存在する場合は、そのテーブルへのポインターを返します。

  3. 1 回限りのテーブルがまだ存在しない場合は、 CreateTable を 呼び出して作成します。

  4. テーブル行の列に次のプロパティを設定します。

  • テンプレートで 作成できる受信者の種類の名前にPR_DISPLAY_NAME (PidTagDisplayName)。

  • 1 回限りのテンプレートのエントリ識別子にPR_ENTRYID (PidTagEntryId)。

  • PR_DEPTH (PidTagDepth) を使用して、1 回限りのテーブル表示で階層レベルを示します。

  • PR_SELECTABLE (PidTagSelectable) を TRUE にして、行がテンプレートを表しているかどうかを示し、それ以外の場合は FALSE を指定します。

  • テンプレート によって作成されたアドレスの種類にPR_ADDRTYPE (PidTagAddressType)。

  • PR_DISPLAY_TYPE (PidTagDisplayType) をDT_MAILUSERするか、テンプレートの表示の種類を示す別の値に設定します。

  • PR_INSTANCE_KEY (PidTagInstanceKey) を一意のバイナリ値に設定します。

  1. ITableData::HrModifyRow を呼び出して、テーブルを直接変更します。

  2. ITableData::HrGetView を呼び出して、呼び出し元に戻る IMAPITable インターフェイスの実装を作成します。