IMAPISession::QueryIdentity
適用於:Outlook 2013 |Outlook 2016
傳回物件的專案標識碼,該物件提供會話的主要身分識別。
HRESULT QueryIdentity(
ULONG FAR * lpcbEntryID,
LPENTRYID FAR * lppEntryID
);
參數
lpcbEntryID
[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 範例程式代碼,請參閱下表。
檔案 | Function | Comment |
---|---|---|
MainDlg.cpp |
CMainDlg::OnQueryIdentity |
MFCMAPI 使用 IMAPISession::QueryIdentity 方法開啟會話主要身分識別的通訊簿專案。 |