Office 2013 and later

Last modified: July 23, 2011

Applies to: Outlook

Opens the entryID using the Exchange Address Book identified by pEmsabpUID. This function works similarly to IAddrBook::OpenEntry except that using this function ensures that IAddrBook::OpenEntry is opened by using the expected Exchange Address Book provider.

Header file:


Implemented by:


Called by:

Client applications and service providers

HRESULT HrOpenABEntryWithProviderUID(
  const MAPIUID *pEmsabpUID,
  LPADRBOOK pAddrBook,
  ULONG cbEntryID,
  LPCIID lpInterface,
  ULONG ulFlags,
  ULONG FAR * lpulObjType,


[in] A pointer to an emsmdbUID that identifies the Exchange Service that contains the Exchange Address Book Provider that this function should use to display details on the entry identifier. If the incoming entry identifier is not an Exchange Address Book Provider entry identifier, this parameter is ignored and the function call behaves like IAddrBook::Details. If this parameter is NULL or a zero MAPIUID, this function behaves like IAddrBook::Details.


[in] The address book used to open the entry identifier. It cannot be NULL.


[in] The byte count of the entry identifier specified by the lpEntryID parameter.


[in] A pointer to the entry identifier that represents the address book entry to open.


[in] A pointer to the interface identifier (IID) of the interface that is used to access the open entry. Passing NULL returns the standard interface of the object. For messaging users, the standard interface is IMailUser : IMAPIProp. For distribution lists, it is IDistList : IMAPIContainerand for containers, it is IABContainer : IMAPIContainer. Callers can set lpInterface to the appropriate standard interface or an interface in the inheritance hierarchy.


[in] A bitmask of flags that controls the how the entry is opened, The following flags can be set:


Requests that the entry be opened with the maximum allowed network and client permissions. For example, if the client has read and write permission, the address book provider attempts to open the entry with read and write permission. The client can retrieve the access level that was granted by calling the IMAPIProp::GetProps method of the open entry and retrieving the PR_ACCESS_LEVEL (PidTagAccessLevel) property.


Use only the offline address book to perform name resolution. For example, you can use this flag to allow a client application to open the global address list (GAL) in cached exchange mode and access an entry in that address book from the cache without creating traffic between the client and the server. This flag is supported only by the Exchange Address Book Provider.


Allows the call to succeed, potentially before the entry is fully open and available, implying that subsequent calls to the entry might return an error.


Use only the GAL to perform name resolution. This flag is supported only by the Exchange Address Book Provider.


Requests that the entry be opened with read and write permission. Because entries are opened with read-only access by default, clients should not assume that read and write permission was granted regardless of whether MAPI_MODIFY is set.


Do not use the offline address book to perform name resolution. This flag is supported only by the Exchange Address Book Provider.


[out] A pointer to the type of the opened entry.


[out] A pointer to a pointer of the opened entry.