共用方式為


IMAPIProp::SetProps

適用於:Outlook 2013 |Outlook 2016

匯報 一或多個屬性。

HRESULT SetProps(
  ULONG cValues,
  LPSPropValue lpPropArray,
  LPSPropProblemArray FAR * lppProblems
);

參數

cValues

[in] lpPropArray 參數所指向的屬性值計數。 cValues 參數不得為 0。

lpPropArray

[in] SPropValue 結構陣列的指標,其中包含要更新的屬性值。

lppProblems

[in, out]在輸入時, 指向 SPropProblemArray 結構指標的指標;否則為 NULL,表示不需要錯誤資訊。 如果 lppProblems 是輸入的有效指標, SetProps 會傳回更新一或多個屬性時發生錯誤的詳細資訊。

傳回值

S_OK

屬性已成功更新。

下列值可以在 SPropProblemArray 結構中傳回,但不能作為 SetProps 的傳回值:

MAPI_E_BAD_CHARWIDTH

已設定MAPI_UNICODE旗標,且實作不支援 Unicode,或未設定MAPI_UNICODE,且實作僅支援 Unicode。

MAPI_E_COMPUTED

無法更新 屬性,因為它是唯讀的,由負責對象的服務提供者計算。

MAPI_E_INVALID_TYPE

屬性類型無效。

MAPI_E_NO_ACCESS

嘗試修改唯讀物件,或存取用戶沒有足夠的許可權的物件。

MAPI_E_NOT_ENOUGH_MEMORY

無法更新 屬性,因為它大於遠端過程調用 (RPC) 緩衝區大小。

MAPI_E_UNEXPECTED_TYPE

屬性類型不是呼叫實作所預期的類型。

實作者注意事項

忽略 PR_NULL (PidTagNull) 屬性標籤,以及所有類型為 PT_ERROR 的屬性。 請勿在 SPropProblemArray 結構中進行變更或報告問題。

如果屬性值陣列中包含PT_OBJECT類型的屬性,則 傳回MAPI_E_INVALID_PARAMETER 。 如果陣列中包含多重值屬性,且其 cValues 成員設定為 0,則也會傳回此錯誤。

如果呼叫整體成功,但設定某些屬性時發生問題,請傳回S_OK,並將問題的相關信息放在 lppProblems 參數所指向之 SPropProblemArray 結構的適當專案中。

呼叫者注意事項

視服務提供者而定,您也可以傳遞屬性標籤來變更屬性類型,其中包含與先前搭配指定屬性識別碼使用的不同類型。

如果您針對 物件不支援的屬性包含屬性標籤,且 SetProps 的實作允許建立新的屬性,則會將 屬性新增至物件。 會捨棄與用於新屬性之屬性標識符一起儲存的任何先前值。

請注意,S_OK傳回值並不保證所有屬性都已成功更新。 某些提供者會快取 SetProps 呼叫,直到收到需要提供者介入的呼叫,例如 IMAPIProp::SaveChangesIMAPIProp::GetProps。 因此,可以接收與 SetProps 呼叫相關的錯誤值,以及後續的呼叫。

如果 SetProps 傳回S_OK,請檢查 lppProblems 所指向的 SPropProblemArray 結構是否有更新個別屬性的問題。 如果 SetProps 傳回錯誤,請勿檢查屬性問題陣列。 請改為呼叫物件的 IMAPIProp::GetLastError 方法。

更新大型屬性時, SetProps 可能會失敗並傳回MAPI_E_NOT_ENOUGH_MEMORY。 屬性沒有大小上限,而且不同的物件可以有不同的限制。 如果您處理潛在的大型屬性,如果 SetProps 傳回此錯誤值,請準備好呼叫 IMAPIProp::OpenProperty 方法,並以IID_IStream作為介面標識符。

呼叫 MAPIFreeBuffer 函式以釋放 SPropProblemArray 結構。

MFCMAPI 參考

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

檔案 Function Comment
PropertyEditor.cpp
CPropertyEditor::WriteSPropValueToObject
在編輯屬性之後,MFCMAPI 會使用 IMAPIProp::SetProps 方法將屬性寫回物件。

另請參閱

IMAPIProp::GetLastError

IMAPIProp::GetProps

IMAPIProp::OpenProperty

IMAPIProp::SaveChanges

MAPIFreeBuffer

SPropProblemArray

SPropValue

IMAPIProp:IUnknown