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_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 方法打开会话的主要标识的通讯簿条目。

另请参阅

IMAPISession::OpenEntry

IMsgServiceAdmin::SetPrimaryIdentity

MAPIFreeBuffer

IMAPISession : IUnknown

MFCMAPI 代码示例

MAPI 主标识

检索主要标识和提供程序标识

使用宏进行错误处理

状态表和状态对象