IMAPISession::QueryIdentity
适用于:Outlook 2013 | Outlook 2016
返回为会话提供主标识的 对象的条目标识符。
HRESULT QueryIdentity(
ULONG FAR * lpcbEntryID,
LPENTRYID FAR * lppEntryID
);
参数
l恩特利ID
[out]指向 lppEntryID 参数指向的条目标识符中的字节计数的指针。
lppEntryID
[out]指向指向提供主标识的对象条目标识符的指针的指针。
返回值
S_OK
已成功返回主要标识。
MAPI_W_NO_SERVICE
调用成功,但会话没有主标识。 返回此警告时,应将调用处理为成功。 若要测试此警告,请使用 HR_FAILED 宏。 有关详细信息,请参阅 使用宏进行错误处理。
备注
IMAPISession::QueryIdentity 方法检索当前会话的主标识,并通过 lppEntryID 参数返回值。 主要标识是对象(通常是消息用户),表示会话的用户。 lppEntryID 返回 IMailUser 对象的主要标识,该对象也存储为 PidTagEntryID 属性。 可以使用 lppEntryID 中返回的值使用 IMAPISession::OpenEntry 打开 IMailUser 对象。
尽管多个消息服务中的许多服务提供商可以为会话提供主要标识,但 MAPI 指定了单个服务提供程序。 提供主标识的服务提供商设置以下项:
PR_RESOURCE_FLAGS (PidTagResourceFlags) 属性中的STATUS_PRIMARY_IDENTITY标志。
PR_IDENTITY_DISPLAY (PidTagIdentityDisplay) 属性。
PR_IDENTITY_ENTRYID (PidTagIdentityEntryId) 属性。
PR_IDENTITY_SEARCH_KEY (PidTagIdentitySearchKey) 属性。
如果提供主要标识的服务提供程序属于消息服务,则消息服务中的其他服务提供程序也会设置PR_IDENTITY属性。 这些属性在会话的状态表中发布。
如果可能, QueryIdentity 将从标记 有 STATUS_PRIMARY_IDENTITY 的状态行返回 PR_IDENTITY_ENTRYID 属性的值。 如果主要标识行中缺少 PR_IDENTITY_ENTRYID 属性, QueryIdentity 将返回使用该行中的其他信息生成的一次性条目标识符。
如果状态表中所有 PR_RESOURCE_FLAG 列缺少STATUS_PRIMARY_IDENTITY标志, QueryIdentity 将返回它找到的第一个条目标识符。 如果没有要返回的相应条目标识符, QueryIdentity 会成功并显示警告MAPI_W_NO_SERVICE并将 lppEntryID 指向硬编码的条目标识符。
给调用方的说明
可以调用 IMsgServiceAdmin::SetPrimaryIdentity 方法,为消息服务分配提供会话的主要标识的任务。
检索主要标识的另一种方法是搜索状态表中的行,并将 PR_RESOURCE_FLAGS 列设置为STATUS_PRIMARY_IDENTITY。 有关此替代方式检索标识信息的详细信息,请参阅 状态表和状态对象。
使用 由 QueryIdentity 返回的主标识的入口标识符后,通过调用 MAPIFreeBuffer 函数释放其内存。
有关一般标识的详细信息,请参阅 MAPI 主标识。
有关检索 MAPI 会话标识的详细信息,请参阅 检索主要标识和提供程序标识。
MFCMAPI 引用
有关 MFCMAPI 示例代码,请参阅下表。
文件 | 函数 | Comment |
---|---|---|
MainDlg.cpp |
CMainDlg::OnQueryIdentity |
MFCMAPI 使用 IMAPISession::QueryIdentity 方法打开会话的主要标识的通讯簿条目。 |