Optional Features for Address Book Providers

There are many optional features for address book providers. Some of the more commonly implemented features include:

The following table briefly describes these optional features and how you implement them:

Feature How to implement
Supply templates for creating entries for message recipient lists Implement the IABLogon::GetOneOffTable method. See One-Off Tables and Implementing One-Off Tables.
Group recipients into a named unit Support the properties of distribution lists by implementing the IDistList interface.
Act as a foreign address book provider by allowing entries to be added to a container in another provider Support binding code to data in the host provider by:

1. Supporting the PR_TEMPLATEID property on messaging users and distribution lists. See Address Book Identifiers.

2. Implementing the IABLogon::OpenTemplateID method. See Acting as a Foreign Address Book Provider.

Acting as a host address book provider by inserting entries from another provider Support binding data to code from a foreign provider by calling the IMAPISupport::OpenTemplateID method. See Acting as a Host Address Book Provider.
Prefix scrolling Support restrictions on container contents tables. See About Restrictions.
Advanced searching in a container Support the PR_SEARCH property on containers. See Implementing Advanced Searching.
Event notification Implement the IABLogon::Advise and IABLogon::Unadvise methods. See Event Notification in MAPI and Supporting Event Notification.

For event notification, your IABLogon::Advise method will be called by MAPI when a client calls IAddrBook::Advise to register for notifications on any one of your containers, messaging users, or distribution lists. However, because supporting event notification is optional, you can return MAPI_E_NO_SUPPORT from these methods. However, MAPI does recommend that you at least support notifications on your contents tables and encourages you to support all types of object notification except for fnevSearchComplete and the fnevCriticalError event to add value.