IMAPISupport::OpenTemplateID
适用于:Outlook 2013 | Outlook 2016
打开外部通讯簿提供程序中的收件人条目。
HRESULT OpenTemplateID(
ULONG cbTemplateID,
LPENTRYID lpTemplateID,
ULONG ulTemplateFlags,
LPMAPIPROP lpMAPIPropData,
LPCIID lpInterface,
LPMAPIPROP FAR * lppMAPIPropNew,
LPMAPIPROP lpMAPIPropSibling
);
参数
cbTemplateID
[in] lpTemplateID 指向的模板标识符中的字节计数。
lpTemplateID
[in]指向模板标识符PR_TEMPLATEID的指针, (PidTagTemplateid) 要打开的收件人条目的属性。
ulTemplateFlags
[in]用于描述如何打开条目的标志的位掩码。 可以设置以下标志:
FILL_ENTRY
正在创建新条目。 当外部提供程序收到来自 MAPI 的后续 IABLogon::OpenTemplateID 调用时,它可以通过修改 lpMAPIPropData 参数指向的属性或通过在 lppMAPIPropNew 中返回特定接口实现来控制如何为新条目设置属性来控制条目的创建方式。
lpMAPIPropData
[in]指向调用方用于访问条目的接口实现的指针。 这是外部提供程序可以使用其自己的实现包装并在 lppMAPIPropNew 参数中返回的实现。 lpMAPIPropData 参数必须指向派生自 IMAPIProp 的读/写接口实现:IUnknown 并支持在 lpInterface 参数中请求的接口。
lpInterface
[in]指向接口标识符的指针 (IID) ,表示用于访问条目的接口。 lppMAPIPropNew 参数指向 lpInterface 指定的类型的接口。 传递 NULL 将返回消息用户的标准接口,IID_IMailUser。
lppMAPIPropNew
[out]指向外部提供程序为访问条目提供的接口实现的指针。
lpMAPIPropSibling
保留;必须为 NULL。
返回值
S_OK
绑定过程已成功。
MAPI_E_UNKNOWN_ENTRYID
外部通讯簿提供程序不存在。
备注
IMAPISupport::OpenTemplateID 方法仅针对通讯簿提供程序支持对象实现。 OpenTemplateID 仅由通讯簿提供商调用,这些通讯簿提供商可以充当属于其他通讯簿提供程序(也称为外部提供商)的条目的主机。 主机提供程序调用 OpenTemplateID 以打开外部条目,当主机提供程序中的数据绑定到外部提供程序中的代码时,会出现这种情况。
给调用方的说明
仅当支持存储具有来自外部通讯簿提供程序的模板标识符的条目时,才调用 OpenTemplateID 。 此类支持对 IABContainer::CreateEntry 和 IABLogon::OpenEntry 实现提出了 其他要求。 有关详细信息,请参阅这些方法的说明和 充当主机通讯簿提供程序的说明。
如果 OpenTemplateID 调用以绑定接口的形式返回传入的相同属性对象实现,则可以释放对属性对象的引用。 这是因为外部提供程序已调用对象的 AddRef 方法来保留其自己的引用。 如果外部提供程序不需要保留对属性对象的引用,则 OpenTemplateID 将返回未绑定的属性对象。
如果 OpenTemplateID 失败并MAPI_E_UNKNOWN_ENTRYID,请尝试通过将条目视为只读来继续。