SPropertyRestriction
Gilt für: Outlook 2013 | Outlook 2016
Beschreibt eine Eigenschaftseinschränkung, die verwendet wird, um eine Konstante mit dem Wert einer Eigenschaft abzugleichen.
Eigenschaft | Wert |
---|---|
Headerdatei |
Mapidefs.h |
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
Members
relop
Relationaler Operator, der in der Suche verwendet wird. Folgende Werte sind möglich:
RELOP_GE: Der Vergleich erfolgt basierend auf einem größeren oder gleichen ersten Wert.
RELOP_GT: Der Vergleich basiert auf einem höheren ersten Wert.
RELOP_LE: Der Vergleich basiert auf einem niedrigeren oder gleichen ersten Wert.
RELOP_LT: Der Vergleich basiert auf einem niedrigeren ersten Wert.
RELOP_NE: Der Vergleich erfolgt basierend auf ungleichen Werten.
RELOP_RE: Der Vergleich basiert auf LIKE-Werten (regulärer Ausdruck).
RELOP_EQ: Der Vergleich erfolgt basierend auf gleichen Werten.
ulPropTag
Eigenschaftstag, das die zu vergleichende Eigenschaft angibt.
lpProp
Zeiger auf eine SPropValue-Struktur , die den konstanten Wert enthält, der im Vergleich verwendet wird.
Hinweise
Eine SPropertyRestriction-Struktur enthält zwei Eigenschaftstags. Eine befindet sich im ulPropTag-Member und das andere im ulPropTag-Member der SPropValue-Struktur , auf die lpProp zeigt. MAPI erfordert sowohl das Eigenschaftenbezeichnerfeld als auch das Eigenschaftentypfeld. Das ulPropTag in SPropertyRestriction ist die zu zuordnende Eigenschaft, und der lpPropProp-Zeiger der SPropertyRestriction auf den UlPropTag-Typ des SPropValue gibt an, wie der Memberwert der lpPropProp-Union interpretiert wird. Die beiden Eigenschaftentypen müssen übereinstimmen, andernfalls wird der Fehlerwert MAPI_E_TOO_COMPLEX zurückgegeben, wenn die Einschränkung in einem Aufruf von IMAPITable::Restrict oder IMAPITable::FindRow verwendet wird.
Die Vergleichsreihenfolge ist (Eigenschaftswert) (relationaler Operator) (konstanter Wert).
Wenn eine Eigenschaftseinschränkung an IMAPITable::Restrict oder IMAPITable::FindRow übergeben wird und die Zieleigenschaft nicht vorhanden ist, sind die Ergebnisse der Einschränkung nicht definiert. Durch das Erstellen einer AND-Einschränkung , die die Eigenschaftseinschränkung mit einer EXIST-Einschränkung verknüpft, können einem Aufrufer genaue Ergebnisse garantiert werden. Verwenden Sie eine SExistRestriction-Struktur , um die EXIST-Einschränkung und eine SAndRestriction-Struktur zu definieren, um die AND-Einschränkung zu definieren.
Im speziellen Fall von Exchange Server 2019 weisen Vergleiche, die auf dem Server durchgeführt werden, ein Verhalten auf, das fehlende Eigenschaften so behandelt werden, als ob sie vorhanden wären und einen Wert aufweisen, der kleiner als der minimal mögliche Datentypwert ist. Mit anderen Worten, wenn ein MAPI-Objekt, dem z. B. eine PR_SENSITIVITY -Eigenschaft fehlt und das mit einer SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}}
-Struktur getestet wird, ergibt der Vergleich "true". (Dies entspricht der obigen Angabe "ist undefiniert".)
Mehrwertige Eigenschaftstags können in Eigenschaftseinschränkungen verwendet werden, wenn der Dienstanbieter, der die Tabelle implementiert, diese unterstützt. Falls unterstützt, können mehrwertige Eigenschaftstags überall verwendet werden, wo einwertige Eigenschaftstags verwendet werden können.
Mehrwertige Eigenschaftstags können in den folgenden Methoden verwendet werden:
Wichtig
Ein bemerkenswerter Fall, in dem die beiden Eigenschaftentags nicht übereinstimmen, ist das Einschränken auf eine mehrwertige Eigenschaft. In diesem Fall muss Folgendes zutreffen.
Wenn der Eigenschaftentyp des ulPropTags von SPropertyRestriction das Bitflag vom Typ der mehrwertigen Eigenschaft MV_FLAG (0x1000) enthält, sollte der Eigenschaftentyp des ulPropTag von SPropValue mit dem ersteren abzüglich des MV_FLAG Bitflags, d. h. dessen Umkehrung, übereinstimmen.
> Wenn Sie beispielsweise die Verwendung einer benutzerdefinierten Zeichenfolgeneigenschaft mit mehreren Werten einschränken möchten, z. B. eine Kategorie mit einem Eigenschaftstag für die Eigenschaft 0x8012101f, d. h. PROP_TAG(MV_FLAG|PT_UNICODE, 0x8012)), würde die entsprechende SPropertyRestriction wie folgt aussehen.
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";
> Beachten Sie, dass, wenn der Eigenschaftentyp des ulPropTags von SPropValue das MV_FLAG Bitflag enthält, die wahrscheinliche Rückgabe MAPI_E_TOO_COMPLEX ist.
Weitere Informationen zur SPropertyRestriction-Struktur finden Sie unter Informationen zu Einschränkungen.