SPropertyRestriction
S’applique à : Outlook 2013 | Outlook 2016
Décrit une restriction de propriété utilisée pour faire correspondre une constante à la valeur d’une propriété.
Propriété | Valeur |
---|---|
Fichier d’en-tête : |
Mapidefs.h |
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
Members
relop
Opérateur relationnel qui sera utilisé dans la recherche. Les valeurs possibles sont les suivantes :
RELOP_GE : la comparaison est effectuée sur la base d’une première valeur supérieure ou égale.
RELOP_GT : la comparaison est effectuée sur la base d’une première valeur supérieure.
RELOP_LE : la comparaison est effectuée sur la base d’une première valeur inférieure ou égale.
RELOP_LT : la comparaison est effectuée sur la base d’une première valeur inférieure.
RELOP_NE : la comparaison est basée sur des valeurs inégales.
RELOP_RE : la comparaison est basée sur des valeurs LIKE (expression régulière).
RELOP_EQ : la comparaison est basée sur des valeurs égales.
ulPropTag
Balise de propriété identifiant la propriété à comparer.
lpProp
Pointeur vers une structure SPropValue qui contient la valeur constante qui sera utilisée dans la comparaison.
Remarques
Il existe deux balises de propriété dans une structure SPropertyRestriction . L’une est dans le membre ulPropTag et l’autre dans le membre ulPropTag de la structure SPropValue pointée par lpProp. MAPI nécessite à la fois le champ identificateur de propriété et le champ de type de propriété. UlPropTag dans SProptyRestriction est la propriété à mettre en correspondance, et le pointeur lpProp du SPropertyRestriction vers le type ulPropTag de la SPropValue indique comment les valeurs membres de l’union lpPropProp sont interprétées. Les deux types de propriétés doivent correspondre, sinon la valeur d’erreur MAPI_E_TOO_COMPLEX est retournée lorsque la restriction est utilisée dans un appel à IMAPITable ::Restrict ou IMAPITable ::FindRow.
L’ordre de comparaison est (valeur de propriété) (opérateur relationnel) (valeur constante).
Lorsqu’une restriction de propriété est passée à IMAPITable ::Restrict ou IMAPITable ::FindRow et que la propriété cible n’existe pas, les résultats de la restriction ne sont pas définis. En créant une restriction AND qui joint la restriction de propriété à une restriction EXIST , un appelant peut obtenir des résultats précis. Utilisez une structure SExistRestriction pour définir la restriction EXIST et une structure SAndRestriction pour définir la restriction AND .
Dans le cas spécifique de Exchange Server 2019, les comparaisons effectuées sur le serveur présentent un comportement tel que les propriétés absentes sont traitées comme si elles étaient présentes et avaient une valeur inférieure à la valeur de type de données minimale possible. En d’autres termes, si un objet MAPI qui n’a pas, par exemple, une propriété PR_SENSITIVITY et qui est testé avec une SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}}
structure, la comparaison produit « true ». (Cela est cohérent avec la spécification « is undefined » ci-dessus.)
Les balises de propriété à valeurs multiples peuvent être utilisées dans les restrictions de propriété si le fournisseur de services implémentant la table les prend en charge. Si elles sont prises en charge, les balises de propriété à valeurs multiples peuvent être utilisées partout où des balises de propriété à valeur unique peuvent être utilisées.
Les balises de propriété à valeurs multiples peuvent être utilisées dans les méthodes suivantes :
Importante
Un cas notable où les deux balises de propriété ne correspondent pas est si la restriction sur une propriété à valeurs multiples. Dans ce cas, les éléments suivants doivent être vrais.
Si le type de propriété de la propriété ulPropTag de SPropertyRestriction contient l’indicateur de bits de type de propriété à valeurs multiples MV_FLAG (0x1000), le type de propriété de l’objet ulPropTag de SPropValue doit correspondre à l’ancien moins l’indicateur de bits MV_FLAG, c’est-à-dire son inverse.
> Par exemple, pour limiter l’utilisation d’une propriété de chaîne personnalisée à valeurs multiples, telle qu’une catégorie avec une balise de propriété pour la propriété 0x8012101f, c’est-à-dire PROP_TAG(MV_FLAG|PT_UNICODE, 0x8012)), le SPropertyRestriction correspondant apparaît comme suit.
SPropertyRestriction.ulPropTag = 0x8012101f; // attempt to restrict a MultiValue property
SPropertyRestriction.lpProp->ulPropTag = 0x8012001f; // the lpszW member of the Value property is valid
>
SPropertyRestriction.lpProp.Value->lpszW = L"My Category";
> Notez que si le type de propriété de l’objet ulPropTag de SPropValue contient l’indicateur de bits MV_FLAG, le retour probable est MAPI_E_TOO_COMPLEX.
Pour plus d’informations sur la structure SPropertyRestriction , consultez À propos des restrictions.