Share via


IMAPIProp::SetProps

S’applique à : Outlook 2013 | Outlook 2016

Mises à jour une ou plusieurs propriétés.

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

Paramètres

cValues

[in] Nombre de valeurs de propriété pointées par le paramètre lpPropArray . Le paramètre cValues ne doit pas être 0.

lpPropArray

[in] Pointeur vers un tableau de structures SPropValue qui contiennent des valeurs de propriété à mettre à jour.

lppProblems

[in, out] En entrée, pointeur vers un pointeur vers une structure SPropProblemArray ; sinon, NULL, indiquant qu’aucune information d’erreur n’est nécessaire. Si lppProblems est un pointeur valide en entrée, SetProps retourne des informations détaillées sur les erreurs lors de la mise à jour d’une ou plusieurs propriétés.

Valeur renvoyée

S_OK

Les propriétés ont été correctement mises à jour.

Les valeurs suivantes peuvent être retournées dans la structure SPropProblemArray , mais pas en tant que valeurs de retour pour SetProps :

MAPI_E_BAD_CHARWIDTH

Soit l’indicateur MAPI_UNICODE a été défini et l’implémentation ne prend pas en charge Unicode, soit MAPI_UNICODE n’a pas été défini et l’implémentation prend uniquement en charge Unicode.

MAPI_E_COMPUTED

La propriété ne peut pas être mise à jour, car elle est en lecture seule, calculée par le fournisseur de services responsable de l’objet.

MAPI_E_INVALID_TYPE

Le type de propriété n’est pas valide.

MAPI_E_NO_ACCESS

Une tentative a été effectuée pour modifier un objet en lecture seule ou pour accéder à un objet pour lequel l’utilisateur ne dispose pas des autorisations suffisantes.

MAPI_E_NOT_ENOUGH_MEMORY

La propriété ne peut pas être mise à jour, car elle est supérieure à la taille de mémoire tampon de l’appel de procédure distante (RPC).

MAPI_E_UNEXPECTED_TYPE

Le type de propriété n’est pas le type attendu par l’implémentation appelante.

Remarques pour les responsables de l’implémentation

Ignorez la balise de propriété PR_NULL (PidTagNull) et toutes les propriétés de type PT_ERROR. N’apportez pas de modifications ou ne signalez pas de problèmes dans la structure SPropProblemArray .

Retourne MAPI_E_INVALID_PARAMETER si une propriété de type PT_OBJECT est incluse dans le tableau de valeurs de propriété. Retourne également cette erreur si une propriété à valeurs multiples est incluse dans le tableau et que son membre cValues a la valeur 0.

Si l’appel réussit globalement, mais qu’il existe des problèmes lors de la définition de certaines propriétés, retournez S_OK et placez des informations sur les problèmes dans l’entrée appropriée de la structure SPropProblemArray vers laquelle pointe le paramètre lppProblems .

Remarques pour les appelants

Selon le fournisseur de services, vous pouvez également modifier le type de propriété en transmettant une balise de propriété qui contient un type différent de celui utilisé précédemment avec un identificateur de propriété donné.

Si vous incluez une balise de propriété pour une propriété qui n’est pas prise en charge par l’objet et que l’implémentation de SetProps autorise la création de nouvelles propriétés, la propriété est ajoutée à l’objet. Toute valeur précédente stockée avec l’identificateur de propriété utilisé pour la nouvelle propriété est ignorée.

Notez que la valeur de retour S_OK ne garantit pas que toutes les propriétés ont été correctement mises à jour. Certains fournisseurs mettent en cache les appels SetProps jusqu’à ce qu’ils reçoivent un appel qui nécessite une intervention du fournisseur, comme IMAPIProp ::SaveChanges ou IMAPIProp ::GetProps. Par conséquent, il est possible de recevoir des valeurs d’erreur liées à l’appel SetProps avec les appels suivants.

Si SetProps renvoie S_OK, case activée la structure SPropProblemArray pointée par lppProblems pour les problèmes de mise à jour des propriétés individuelles. Si SetProps renvoie une erreur, ne case activée pas le tableau de problèmes de propriété. Au lieu de cela, appelez la méthode IMAPIProp ::GetLastError de l’objet .

Lors de la mise à jour de propriétés volumineuses, SetProps peut échouer et retourner MAPI_E_NOT_ENOUGH_MEMORY. Il n’existe aucune taille maximale pour les propriétés, et différents objets peuvent avoir des limites différentes. Si vous traitez des propriétés potentiellement volumineuses, préparez-vous à appeler la méthode IMAPIProp ::OpenProperty avec IID_IStream comme identificateur d’interface si SetProps retourne cette valeur d’erreur.

Appelez la fonction MAPIFreeBuffer pour libérer la structure SPropProblemArray .

Référence MFCMAPI

Pour voir un exemple de code MFCMAPI, consultez le tableau suivant.

Fichier Fonction Commentaire
PropertyEditor.cpp
CPropertyEditor ::WritesPropValueToObject
MFCMAPI utilise la méthode IMAPIProp ::SetProps pour réécrire une propriété dans un objet après la modification de la propriété.

Voir aussi

IMAPIProp::GetLastError

IMAPIProp::GetProps

IMAPIProp::OpenProperty

IMAPIProp::SaveChanges

MAPIFreeBuffer

SPropProblemArray

SPropValue

IMAPIProp : IUnknown