C++ MAPI。管理 PR_ENTRYID 用户和通讯组列表

C++ MAPI. Manage PR_ENTRYID for Users and Distribution lists

在我的 C++ 应用程序中,我有一个带有联系人的 IMAPITable。

在方法 1 中,我搜索联系人并获取联系人属性,例如 PR_DISPLAY_NAME_W ir PR_ENTRYID。 在方法 2 中,我必须收到一个 ID,我必须打开此条目才能获得另一个 属性。例如,对于联系人,我需要 PR_ADDRTYPE_W,对于通讯组列表,我需要其所有成员的地址。

PR_ENTRYID 是识别 contact/distList(1 中的 return id)并在需要时轻松找到 (2) 的最佳方式吗?我想是的,因为它是一个独特的价值 我看到 pAddressBook->OpenEntry() 可以帮助我,将 entryID 作为参数传递。

首先,它是正确的吗?我可以直接从地址簿中找到联系人(带有 entryId)吗?在我的 AB 中有 10 个列表,联系人在其中之一

我的问题是我不确定如何管理这个 ID,在方法 1 中 return 我有什么:

pRows->aRow->lpProps[abPR_ENTRYID]

以及如何在我需要的 OpenEntry 方法 2 中使用它

    ULONG cbEntryID
    LPENTRYID lpEntryID

hr = pAddressBook->OpenEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,       // nullptr
  ULONG ulFlags,        // 0L
  ULONG FAR * lpulObjType,
  LPUNKNOWN FAR * lppUnk    // In my case 
);

关于 returned 值 (lppUnk),对于联系人,它是一个 IMailUser*,对于分发列表,它是一个 IDistList*?

恐怕我此刻有点迷茫...

有什么帮助吗?

谢谢, 迭戈

上面代码中的

lpulObjType (out) 参数将告诉您返回的对象类型是什么 - MAPI_MAILUSER vs MAPI_DISTLIST.