[in] The byte count in the template identifier pointed to by lpTemplateID.
[in] A pointer to the template identifier PR_TEMPLATEID (PidTagTemplateid) property of the recipient entry to be opened.
[in] A bitmask of flags used to describe how to open the entry. The following flag can be set:
A new entry is being created. When the foreign provider receives the subsequent IABLogon::OpenTemplateID call from MAPI, it can control how the entry is created by modifying properties pointed to by the lpMAPIPropData parameter or by returning a specific interface implementation in lppMAPIPropNew to control how properties for the new entry are set.
[in] A pointer to the interface implementation that the caller uses to access the entry. This is the implementation that the foreign provider can wrap with its own implementation and return in the lppMAPIPropNew parameter. The lpMAPIPropData parameter must point to a read/write interface implementation that derives from IMAPIProp : IUnknown and supports the interface being requested in the lpInterface parameter.
[in] A pointer to the interface identifier (IID) that represents the interface to be used to access the entry. The lppMAPIPropNew parameter points to an interface of the type specified by lpInterface. Passing NULL returns the standard interface for a messaging user, IID_IMailUser.
[out] A pointer to the interface implementation that the foreign provider supplies for accessing the entry.
The IMAPISupport::OpenTemplateID method is implemented only for address book provider support objects. OpenTemplateID is called only by address book providers that can act as hosts for entries that belong to other address book providers, also known as foreign providers. Host providers call OpenTemplateID to open a foreign entry, which occurs when data in the host provider is bound to code in the foreign provider.
If the OpenTemplateID call returns as the bound interface the same property object implementation that you passed in, you can release your reference to your property object. This is because the foreign provider has called the object's AddRef method to keep its own reference. If the foreign provider does not need to keep a reference to the property object, then OpenTemplateID will return the unbound property object.
If OpenTemplateID fails with MAPI_E_UNKNOWN_ENTRYID, try to continue by treating the entry as read-only.