Platform SDK: MAPI

Required Features for Address Book Providers

Address book providers can work with recipient information that is temporary or permanent, local or remote, understandable by one or more messaging systems, and formatted for a disk file or database table. There are a variety of features that an address book provider can implement, thereby adding value and improving interoperability with clients and other providers. However, a few features are required.

The following table describes features that are required of all address book providers and the steps that you need to take to implement them.

Feature How to implement
Session logon 1. Implement an entry point function. See Implementing an Address Book Provider Entry Point Function.

2. Implement the IABProvider::Logon method. See Implementing Address Book Provider Logon and Logoff.

Session logoff Implement the IABProvider::Shutdown method. See Implementing Address Book Provider Logon and Logoff.
Create entry identifiers Provide support for the PR_ENTRYID property. See Entry Identifiers and Address Book Identifiers.
Contribute to the status table 1. Implement the appropriate methods of the IMAPIStatus interface. See Implementing a Status Object.

2. Support the required status table properties. See Status Table.

3. Call IMAPISupport::ModifyStatusRow.

Provide limited status object support 1. Implement the IMAPIStatus::ValidateState method.
2. Return MAPI_E_NO_SUPPORT from the other IMAPIStatus methods.
Support interactive and programmatic configuration 1. Implement a message service entry point function.

2. Implement a display table. See Display Tables and Implementing a Display Table.

3. Implement a property sheet or call the IMAPISupport::DoConfigPropsheet method. See Implementing a Property Sheet.


In addition, if your provider supports recipient creation, you must supply a list of creation templates. Supply this list by implementing the IABLogon::GetOneOffTable method to include all of the templates supported by your provider and the IMAPIProp::OpenProperty method of each container to open the PR_CREATE_TEMPLATES property and include all the templates supported by the container. For more information, see Implementing One-Off Tables.