プロバイダーの一時テーブルを実装します。Implementing a Provider One-Off Table

適用されます: OutlookApplies to: Outlook

MAPI は、クライアント アプリケーションのユーザーは、送信メッセージに受信者を追加するときに、プロバイダーのIABLogon::GetOneOffTableメソッドを呼び出します。MAPI calls your provider's IABLogon::GetOneOffTable method when the user of a client application adds a recipient to an outgoing message. 通常、要求されたアドレスの種類は、メッセージング システムに固有です。Typically, the types of addresses requested are unique to your messaging system. プロバイダーは、受信者の作成をサポートする場合、サポートされている受信者のアドレスの種類ごとにテンプレートを公開する一時テーブルが必要です。If your provider supports recipient creation, it must supply a one-off table that exposes templates for every type of supported recipient address. プロバイダーが受信者の作成をサポートしていない場合は、 GetOneOffTableの呼び出しから MAPI_E_NO_SUPPORT を返します。If your provider does not support recipient creation, return MAPI_E_NO_SUPPORT from the GetOneOffTable call.

MAPI は通常、プロバイダーの一時テーブルを開いたまま、セッションの有効期間をクライアントが呼び出すサブシステムの場合にのみそれを解放するか、ブックのIMAPIStatus::ValidateStateメソッドに対応します。MAPI will typically keep your provider's one-off table open for the lifetime of the session, releasing it only when a client calls either the subsystem's or address book's IMAPIStatus::ValidateState method. MAPI をするよう、ユーザーにこれらの変更を反映できる場合は、テンプレートを追加または削除、このテーブルで通知を登録します。MAPI registers for notifications on this table so that if templates are added or deleted, these changes can be reflected to the user.

IABLogon::GetOneOffTable を実装するにはTo implement IABLogon::GetOneOffTable

  1. UlFlags、flags パラメーターの値を確認してください。Check the value of the flags parameter, ulFlags. MAPI_UNICODE フラグが設定されて、プロバイダーが Unicode をサポートしていない場合は、失敗し、MAPI_E_BAD_CHARWIDTH を返します。If the MAPI_UNICODE flag is set and your provider does not support Unicode, fail and return MAPI_E_BAD_CHARWIDTH.

  2. プロバイダーの一時テーブルが既に作成されているを確認します。Check if your provider's one-off table has already been created. 一時テーブルは静的であるため、プロバイダーが複数回作成プロセスを経由します。Because one-off tables are typically static, your provider never has to go through the creation process more than once. テーブルが既に存在する場合、それへのポインターを返します。If a table already exists, return a pointer to it.

  3. 一時テーブルが存在しない場合は、1 つを作成するのには、 CreateTableを呼び出します。If a one-off table does not yet exist, call CreateTable to create one.

  4. テーブル行の列の次のプロパティを設定します。Set the following properties for the columns in your table rows:

  • PR_DISPLAY_NAME(PidTagDisplayName) にテンプレートを作成できる受信者の種類の名前。PR_DISPLAY_NAME (PidTagDisplayName) to the name of the type of recipient that the template can create.

  • PR_ENTRYID(PidTagEntryId) に 1 回限りのテンプレートのエントリの識別子です。PR_ENTRYID (PidTagEntryId) to the entry identifier for the one-off template.

  • PR_DEPTH(PidTagDepth) の 1 回限りの一覧が表示階層レベルを示す。PR_DEPTH (PidTagDepth) to indicate the hierarchy level in the one-off table display.

  • PR_SELECTABLE(PidTagSelectable) かどうか、行を表すテンプレートと FALSE それ以外の場合を示すために TRUE に設定します。PR_SELECTABLE (PidTagSelectable) to TRUE to indicate if the row represents a template and FALSE otherwise.

  • PR_ADDRTYPE(PidTagAddressType) のテンプレートで作成されたアドレスの種類にします。PR_ADDRTYPE (PidTagAddressType) to the type of address created by the template.

  • PR_DISPLAY_TYPE(PidTagDisplayType) DT_MAILUSER またはテンプレートの表示の種類を示す別の値にします。PR_DISPLAY_TYPE (PidTagDisplayType) to DT_MAILUSER or another value that indicates the type of display for the template.

  • PR_INSTANCE_KEY(PidTagInstanceKey) に固有のバイナリ値です。PR_INSTANCE_KEY (PidTagInstanceKey) to a unique binary value.

  1. テーブルを直接変更するのにはITableData::HrModifyRowを呼び出します。Call ITableData::HrModifyRow to modify the table directly.

  2. 呼び出し元に戻るにはIMAPITableインターフェイスの実装を作成するのには、 ITableData::HrGetViewを呼び出します。Call ITableData::HrGetView to create an IMAPITable interface implementation to return to the caller.