Most address book providers support at least one container, some of them modifiable. Address book containers can supply contents and hierarchy tables, search capabilities, and name resolution. Modifiable containers allow the deletion of entries such as messaging users, distribution lists, or other containers and the addition of entries from entries in other containers or from one-off templates.
The following table describes features that are required of address book providers that have containers, modifiable or read-only, and how you implement them.
Feature | How to implement |
---|---|
Access messaging users | Implement the IABLogon::OpenEntry method. See Opening Address Book Entries. |
Compare messaging users | Implement the IABLogon::CompareEntryIDs method. See Comparing Address Book Entries. |
Create messaging users | 1. Provide a list of creation templates in a one-off table by supporting the PR_CREATE_TEMPLATES property. See Implementing a Container One-Off Table. 2. Implement the IABContainer::CreateEntry method. See Adding Address Book Entries. |
Copy messaging users | Implement the IABContainer::CopyEntries method. See Copying Address Book Entries. |
Remove messaging users | Implement the IABContainer::DeleteEntries method. See Removing Address Book Entries. |
Provide summary information about messaging users | Support the container property PR_CONTAINER_CONTENTS. See Contents Tables. |
Provide detailed information about messaging users | Support the PR_DETAILS_TABLE property on messaging users and distribution lists. See Displaying Recipient Information and Display Tables. |
Provide detailed information about a container | Support the PR_DETAILS_TABLE property on the container. See Displaying Recipient Information and Display Tables. |
Provide a hierarchical list of containers | Support the container property PR_CONTAINER_HIERARCHY. See Hierarchy Tables. |
Support messaging user properties | Implement the IMailUser interface. |
Resolve ambiguous names | 1. Support the PR_ANR property restriction. 2. Optionally implement the IABContainer::ResolveNames method. |