IMAPIProp::GetIDsFromNames
適用於:Outlook 2013 |Outlook 2016
提供對應至一或多個屬性名稱的屬性標識碼。
HRESULT GetIDsFromNames(
ULONG cPropNames,
LPMAPINAMEID FAR * lppPropNames,
ULONG ulFlags,
LPSPropTagArray FAR * lppPropTags
);
參數
cPropNames
[in] lppPropNames 參數所指向的屬性名稱計數。 如果 lppPropNames 是 NULL,cPropNames 參數必須是 0。
lppPropNames
[in]屬性名稱陣列的指標,或 NULL。 針對物件具有資訊的所有屬性集合中的所有屬性名稱,傳遞NULL要求屬性標識碼。 如果在ulFlags參數中設定MAPI_CREATE旗標,則 lppPropNames 參數不得為 NULL。
ulFlags
[in]旗標的位掩碼,指出應該如何傳回屬性標識符。 您可以設定下列旗標:
MAPI_CREATE
如果尚未指派屬性標識碼,則將屬性標識符指派給 lppPropNames 所指向之屬性名稱陣列中包含的一或多個名稱。 此旗標會在內部登錄名稱對標識碼對應數據表中的識別碼。
lppPropTags
[out]屬性標記陣列的指標,其中包含現有或新指派的屬性標識碼。 這個陣列中屬性標記的屬性類型會設定為 PT_UNSPECIFIED。
傳回值
S_OK
已成功傳回指定屬性名稱的識別碼。
MAPI_E_NO_SUPPORT
物件不支援具名屬性。
MAPI_E_NOT_ENOUGH_MEMORY
記憶體不足,無法擷取標識碼。
MAPI_E_TOO_BIG
無法執行作業,因為它需要傳回太多屬性標記。
MAPI_W_ERRORS_RETURNED
呼叫整體成功,但無法傳回一或多個屬性標識符。 每個無法使用屬性的對應屬性類型會設定為 PT_ERROR ,且其標識碼設為零。 傳回此警告時,請將呼叫視為成功處理。 若要測試此警告,請使用 HR_FAILED 宏。 請參閱 使用宏進行錯誤處理。
註解
IMAPIProp::GetIDsFromNames 方法會擷取屬性標籤的陣列,以保存一或多個具名屬性的屬性標識碼。 您可以呼叫 IMAPIProp::GetIDsFromNames 來執行下列動作:
建立新名稱的識別碼。
擷取特定名稱的標識碼。
擷取對象對應中包含之所有具名屬性的標識碼。
資料夾和訊息的訊息存放區提供者通常會使用具名屬性。 其他物件,例如傳訊使用者和配置檔區段,可能不支援名稱與屬性標識符的關聯,而且可能會從 GetIDsFromNames 傳回MAPI_E_NO_SUPPORT。
如果傳回特定名稱的標識符時發生錯誤, GetIDsFromNames 會傳回MAPI_W_ERRORS_RETURNED,並將屬性標籤列專案中的屬性類型設定為 PT_ERROR 名稱,並將標識符設定為零。
名稱對標識符對應是由物件的 PR_MAPPING_SIGNATURE (PidTagMappingSignature) 屬性表示。 PR_MAPPING_SIGNATURE 包含 MAPIUID 結構,表示負責對象的服務提供者。 如果兩個物件 的PR_MAPPING_SIGNATURE 屬性相同,請假設這些物件使用相同的名稱對標識符對應。
實作者注意事項
您在 lppPropNames 參數所指向的屬性標記陣列中傳回的識別碼必須位於0x8000 0xFFFE範圍中。 這個陣列中的項目必須與 lppPropNames 所指向之屬性名稱陣列中傳遞的名稱順序相同。
如果您在容器上支援具名屬性,請針對容器中的所有物件使用相同的名稱對標識符對應 (也就是,請勿針對您郵件存放區中的每個資料夾或資料夾中的每一個訊息使用不同的對應) 。
呼叫者注意事項
因為 lppPropTags 所指向之屬性標記陣列中所傳回標識碼的屬性類型設定為 PT_UNSPECIFIED,所以您必須呼叫 IMAPIProp::SetProps 方法來擷取精確的類型。
如果您移動或複製具有具名屬性的物件,而且來源和目的地物件具有不同的對應簽章,如其 PR_MAPPING_SIGNATURE 屬性的值所示,則必須在這些作業期間保留名稱。 若要保留屬性名稱,請調整對應的屬性標識碼,以符合目的地對象的名稱對標識符對應。
某些物件具有可命名之屬性標識碼數目的限制。 如果 呼叫 GetIDsFromNames 導致超過此限制,則方法會傳回MAPI_E_TOO_BIG。 在此情況下,請依標識碼查詢。
如需詳細資訊,請參閱 MAPI具名屬性。
MFCMAPI 參考
如需 MFCMAPI 範例程式代碼,請參閱下表。
檔案 | Function | Comment |
---|---|---|
SingleMAPIPropListCtrl.cpp |
CSingleMAPIPropListCtrl::FindAllNamedPropsUsed |
MFCMAPI 使用 IMAPIProp::GetIDsFromNames 方法來取得所有已對應之具名屬性的屬性標記。 |