IMAPIProp::SetProps
Gilt für: Outlook 2013 | Outlook 2016
Updates eine oder mehrere Eigenschaften.
HRESULT SetProps(
ULONG cValues,
LPSPropValue lpPropArray,
LPSPropProblemArray FAR * lppProblems
);
Parameter
cValues
[in] Die Anzahl der Eigenschaftswerte, auf die der lpPropArray-Parameter verweist. Der cValues-Parameter darf nicht 0 sein.
lpPropArray
[in] Ein Zeiger auf ein Array von SPropValue-Strukturen , die zu aktualisierende Eigenschaftswerte enthalten.
lppProblems
[in, out] Bei der Eingabe ein Zeiger auf einen Zeiger auf eine SPropProblemArray-Struktur ; andernfalls NULL, der angibt, dass keine Fehlerinformationen erforderlich sind. Wenn lppProblems ein gültiger Zeiger für die Eingabe ist, gibt SetProps detaillierte Informationen zu Fehlern beim Aktualisieren einer oder mehrerer Eigenschaften zurück.
Rückgabewert
S_OK
Die Eigenschaften wurden erfolgreich aktualisiert.
Die folgenden Werte können in der SPropProblemArray-Struktur zurückgegeben werden, jedoch nicht als Rückgabewerte für SetProps:
MAPI_E_BAD_CHARWIDTH
Entweder wurde das flag MAPI_UNICODE festgelegt, und die Implementierung unterstützt Unicode nicht, oder MAPI_UNICODE wurde nicht festgelegt und die Implementierung unterstützt nur Unicode.
MAPI_E_COMPUTED
Die Eigenschaft kann nicht aktualisiert werden, da sie schreibgeschützt ist und von dem Dienstanbieter berechnet wird, der für das Objekt verantwortlich ist.
MAPI_E_INVALID_TYPE
Der Eigenschaftstyp ist ungültig.
MAPI_E_NO_ACCESS
Es wurde versucht, ein schreibgeschütztes Objekt zu ändern oder auf ein Objekt zuzugreifen, für das der Benutzer nicht über ausreichende Berechtigungen verfügt.
MAPI_E_NOT_ENOUGH_MEMORY
Die Eigenschaft kann nicht aktualisiert werden, da sie größer als der RPC-Puffer (Remote Procedure Call) ist.
MAPI_E_UNEXPECTED_TYPE
Der Eigenschaftstyp ist nicht der Typ, der von der aufrufenden Implementierung erwartet wird.
Hinweise für Implementierer
Ignorieren Sie das eigenschaftentag PR_NULL (PidTagNull) und alle Eigenschaften mit dem Typ PT_ERROR. Nehmen Sie keine Änderungen vor oder melden Sie Probleme in der SPropProblemArray-Struktur .
Gibt MAPI_E_INVALID_PARAMETER zurück, wenn eine Eigenschaft vom Typ PT_OBJECT im Eigenschaftenwertarray enthalten ist. Gibt diesen Fehler auch zurück, wenn eine mehrwertige Eigenschaft im Array enthalten ist und dessen cValues-Member auf 0 festgelegt ist.
Wenn der Aufruf insgesamt erfolgreich ist, aber Probleme beim Festlegen einiger Eigenschaften auftreten, geben Sie S_OK zurück, und fügen Sie Informationen zu den Problemen in den entsprechenden Eintrag der SPropProblemArray-Struktur ein, auf die der lppProblems-Parameter verweist.
Hinweise für Aufrufer
Je nach Dienstanbieter können Sie den Eigenschaftentyp möglicherweise auch ändern, indem Sie ein Eigenschaftstag übergeben, das einen anderen Typ enthält als zuvor mit einem bestimmten Eigenschaftenbezeichner verwendet wurde.
Wenn Sie ein Eigenschaftstag für eine Eigenschaft einschließen, die vom -Objekt nicht unterstützt wird und die Implementierung von SetProps die Erstellung neuer Eigenschaften zulässt, wird die Eigenschaft dem -Objekt hinzugefügt. Alle vorherigen Werte, die mit dem Eigenschaftenbezeichner gespeichert wurden, der für die neue Eigenschaft verwendet wurde, werden verworfen.
Beachten Sie, dass der S_OK Rückgabewert nicht garantiert, dass alle Eigenschaften erfolgreich aktualisiert wurden. Einige Anbieter speichern SetProps-Aufrufe zwischen, bis sie einen Aufruf erhalten, der einen Anbietereingriff erfordert, z. B. IMAPIProp::SaveChanges oder IMAPIProp::GetProps. Daher ist es möglich, Fehlerwerte zu erhalten, die sich auf den SetProps-Aufruf bei den späteren Aufrufen beziehen.
Wenn SetProps S_OK zurückgibt, überprüfen Sie die SPropProblemArray-Struktur , auf die lppProblems verweist, auf Probleme beim Aktualisieren einzelner Eigenschaften. Wenn SetProps einen Fehler zurückgibt, überprüfen Sie nicht das Eigenschaftenproblemarray. Rufen Sie stattdessen die IMAPIProp::GetLastError-Methode des Objekts auf.
Beim Aktualisieren großer Eigenschaften kann SetProps fehlschlagen und MAPI_E_NOT_ENOUGH_MEMORY zurückgeben. Es gibt keine maximale Größe für Eigenschaften, und verschiedene Objekte können unterschiedliche Grenzwerte aufweisen. Wenn Sie mit potenziell großen Eigenschaften umgehen, sollten Sie darauf vorbereitet sein, die IMAPIProp::OpenProperty-Methode mit IID_IStream als Schnittstellenbezeichner aufzurufen, wenn SetProps diesen Fehlerwert zurückgibt.
Rufen Sie die MAPIFreeBuffer-Funktion auf, um die SPropProblemArray-Struktur frei zu geben.
MFCMAPI-Referenz
Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.
Datei | Funktion | Kommentar |
---|---|---|
PropertyEditor.cpp |
CPropertyEditor::WriteSPropValueToObject |
MFCMAPI verwendet die IMAPIProp::SetProps-Methode , um eine Eigenschaft zurück in ein Objekt zu schreiben, nachdem die Eigenschaft bearbeitet wurde. |