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.