The SPropertyRestriction structure describes a property restriction which is used to match a constant with the value of a property.
Header file: | MAPIDEFS.H |
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
There are two property tags in an SPropertyRestriction structure: one in the ulPropTag member and the other in the ulPropTag member of the SPropValue structure pointed to by lpProp. In both tags, MAPI requires only the property type field and ignores the property identifier field. However, the two property types must match, or else the error value MAPI_E_TOO_COMPLEX is returned when the restriction is used in a call to IMAPITable::Restrict or IMAPITable::FindRow.
The comparison order is (property value) (relational operator) (constant value).
When a property restriction is passed to IMAPITable::Restrict or IMAPITable::FindRow and the target property does not exist, the results of the restriction are undefined. By creating an AND restriction that joins the property restriction with an exist restriction, a caller can be guaranteed accurate results. Use an SExistRestriction structure to define the exist restriction and an SAndRestriction structure to define the AND restriction.
Multivalued properties can be used in property restrictions if the service provider implementing the table supports them. If supported, multivalued property tags can be used anywhere single-valued property tags can be used. They can be used in IMAPIProp::SetProps, IMAPIProp::GetProps, IMAPITable::SetColumns, IMAPITable::SortTable, and IMAPITable::Restrict.
For more information on the SPropertyRestriction structure, see About Restrictions.
Restriction Structures, SPropValue, SRestriction