共用方式為


IMAPIProp::GetNamesFromIDs

適用於:Outlook 2013 |Outlook 2016

提供對應至一或多個屬性識別碼的屬性名稱。

HRESULT GetNamesFromIDs(
  LPSPropTagArray FAR * lppPropTags,
  LPGUID lpPropSetGuid,
  ULONG ulFlags,
  ULONG FAR * lpcPropNames,
  LPMAPINAMEID FAR * FAR * lpppPropNames
);

參數

lppPropTags

[in, out]在輸入時,是包含屬性標記數位之 SPropTagArray 結構的指標;否則為 NULL,表示應該傳回所有名稱。 屬性標記陣列的 cValues 成員不能是 0。 如果 lppPropTags 是輸入上的有效指標, GetNamesFromIDs 會 傳回陣列中包含之每個屬性識別碼的名稱。

lpPropSetGuid

[in]GUID 或 GUID 結構的指標,可識別屬性集。 lpPropSetGuid 參數可以指向有效的屬性集,也可以是 NULL。

ulFlags

[in]旗標的位掩碼,表示要傳回的名稱類型。 如果設定這兩個旗標,則 (可以使用下列旗標,) 將不會傳回任何名稱:

MAPI_NO_IDS

要求只傳回儲存為 Unicode 字串的名稱。

MAPI_NO_STRINGS

要求只傳回儲存為數值標識碼的名稱。

lpcPropNames

[out] lppPropNames 參數所指向數位屬性名稱指標計數的指標。

lpppPropNames

[out] MAPINAMEID 結構指標數位列的指標,其中包含屬性名稱。

傳回值

S_OK

已成功傳回屬性名稱。

MAPI_E_NO_SUPPORT

物件不支援具名屬性。

MAPI_W_ERRORS_RETURNED

呼叫整體成功,但無法傳回一或多個屬性的名稱。 失敗屬性的屬性標記具有 屬性類型PT_ERROR。 傳回此警告時,應將呼叫視為成功處理。 若要測試此警告,請使用 HR_FAILED 宏。 如需詳細資訊,請 參閱使用宏進行錯誤處理

MAPI_E_INVALID_PARAMETER

lppPropTags 所指向屬性標記陣列中一或多個專案的 cValues 成員會設定為 0。

註解

雖然對大部分屬性的存取是依屬性標識碼,但某些屬性可以依名稱存取。 您可以呼叫 IMAPIProp::GetNamesFromIDs 方法來執行下列動作:

  • 擷取特定屬性集中特定屬性標識碼的名稱。

  • 擷取任何屬性集中特定屬性標識碼的名稱。

  • 擷取對象對應中包含之所有具名屬性的名稱。

如果 lppPropTags 指向具有一或多個屬性識別碼的有效屬性標記陣列,而 lpPropSetGuid 指向有效的屬性集, GetNamesFromIDs 會忽略屬性集和屬性類型,並傳回所有對應至指定標識符的名稱。

如果 lppPropTags 指向具有一或多個屬性識別碼的有效屬性標記陣列,且 lpPropSetGuid 為 NULL,GetNamesFromIDs 會傳回對應至指定識別符的所有名稱。

如果指定的標識碼沒有名稱, GetNamesFromIDs 會在 lpppPropNames 所傳回結構中該標識碼的位置中傳回 NULL,也會傳回MAPI_W_ERRORS_RETURNED。

如果 lpPropSetGuidlppPropTags 都是 NULL,GetNamesFromIDs 會設定新的屬性標籤列,並傳回物件之所有具名屬性的所有名稱。

如果沒有要傳回的名稱,可能是因為要求的屬性集中沒有屬性,或所有屬性都屬於旗標排除的類型, GetNamesFromIDs 會執行下列動作:

  • 傳回S_OK。

  • 配置新的 SPropTagArray 結構,將 cValues 成員設定為 0。

  • lpcPropNames 的內容設定為 0。

  • lpppPropNames 的內容設定為 NULL。

實作者注意事項

如果 lpPropSetGuid 指向有效的屬性集, 而 lppPropTags 為 NULL,則結果為未定義。 您可以使用下列其中一個策略:

  • 忽略屬性集,並傳回屬性標記數位中識別碼的名稱。

  • 只傳回屬於指定屬性集之屬性標記數位中識別碼的名稱。

  • 呼叫失敗,傳回MAPI_E_INVALID_PARAMETER。

呼叫者注意事項

若要擷取物件的所有具名屬性,您必須先呼叫物件的 IMAPIProp::GetPropList 方法,然後將0x8000範圍上方的傳回標識符傳遞給 GetNamesFromIDs

如果您傳遞有效的屬性集,但未傳遞有效的屬性標記陣列,請為無法預期的結果做好準備。 GetNamesFromIDs 的某些實作會忽略屬性集,並傳回屬性標記數位中標識碼的名稱。 某些實作會傳回MAPI_E_INVALID_PARAMETER。 其他實作仍會傳回屬性集中所有屬性標識碼的名稱。 如果屬性集 PS_PUBLIC_STRINGS,GetNamesFromIDs 可以傳回所有曾經建立的名稱。 服務提供者是否將屬性儲存在與公用字串相關聯的標識符下,是否為immaterial。

當您完成屬性名稱時,請檢查 lpcPropNames 參數的內容,以判斷是否傳回任何名稱。 如果是這樣,請呼叫 MAPIFreeBuffer 函式,以便在成功傳回結果時釋放 lppPropTagslpppPropNames 所指向的記憶體。 對 MAPIFreeBuffer 的一次呼叫就足以供每個參數使用;您不需要周遊指標陣列,並個別釋放每個 MAPINAMEID 結構。

如需具名屬性的詳細資訊,請參閱 MAPI 具名屬性

MFCMAPI 參考

如需 MFCMAPI 範例程式代碼,請參閱下表。

檔案 Function Comment
SingleMAPIPropListCtrl.cpp
CSingleMAPIPropListCtrl::FindAllNamedProps
MFCMAPI 使用 IMAPIProp::GetNamesFromIDs 方法來查閱先前已對應的具名屬性。

另請參閱

GUID

IMAPIProp::GetIDsFromNames

IMAPIProp::GetPropList

MAPIFreeBuffer

MAPINAMEID

SPropTagArray

IMAPIProp:IUnknown

MFCMAPI 作為程式碼範例

MAPI 具名屬性

使用宏處理錯誤