2.12.5.1 PropertyRestriction Structure


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

RestrictType

RelOp

PropTag

...

TaggedValue (variable)

...

RestrictType (1 byte): An unsigned integer. This value indicates the type of restriction (2) and MUST be set to 0x4.

RelOp (1 byte): An unsigned integer. This value indicates the relational operator that is used to compare the property on the object with the value of the TaggedValue field. The value MUST be one of the values listed in the following table.

Relational operator

Hexadecimal value

Evaluation

Alternate name

RelationalOperatorLessThan

0x00

TRUE if the value of the object's property is less than the specified value.

RELOP_LT

RelationalOperatorLessThanOrEqual

0x01

TRUE if the value of the object's property is less than or equal to the specified value.

RELOP_LE

RelationalOperatorGreaterThan

0x02

TRUE if the value of the object's property value is greater than the specified value.

RELOP_GT

RelationalOperatorGreaterThanOrEqual

0x03

TRUE if the value of the object's property value is greater than or equal to the specified value.

RELOP_GE

RelationalOperatorEqual

0x04

TRUE if the object's property value equals the specified value.

RELOP_EQ

RelationalOperatorNotEqual

0x05

TRUE if the object's property value does not equal the specified value.

RELOP_NE

RelationalOperatorMemberOfDL

0x64

TRUE if the value of the object's property is in the DL membership of the specified property value. The value of the object's property MUST be an EntryID of a mail-enabled object in the address book. The specified property value MUST be an EntryID of a Distribution List object in the address book.

RELOP_MEMBER_OF_DL

PropTag (4 bytes): An unsigned integer. This value indicates the property tag of the property that MUST be compared.

TaggedValue (variable): A TaggedValue structure, as specified in section 2.11.4. This structure describes the property value to be compared with. The TaggedValue field contains a property tag subfield that is distinct from the PropTag field of this structure. Only the property type portion of the TaggedValue structure's property tag subfield is used; the property ID is ignored.

Multivalue properties (when the MultivalueFlag bit is set) are supported for this type of restriction (2), but the property types (obtained by masking off the MultivalueFlag bit) of both the PropTag field and property tag subfield of the TaggedValue subfield MUST be the same in all cases.

The MultivalueInstance bit MUST NOT be set on either the PropTag field or the property tag subfield of the TaggedValue.

The cases that are supported for multivalue properties are listed and described in the following table.

PropTag value

TaggedValue value

Support

Details

Single-valued

Single-valued

All RelOp values are supported.

Simple comparison.

Single-valued

Multivalued

Not supported.<8>

Multivalued and the same as a property tag for a MultivalueInstance column in the table

Single-valued

All RelOp values are supported.

In this case, the client has previously called the RopSetColumns ROP ([MS-OXCROPS] section 2.2.5.1) with the MultivalueInstance bit set in the property tag that matches the value in the PropTag field. The value in the TaggedValue field is compared with the value in the column for each row. Only the row that has a matching value is returned.

Multivalued and the same as a property tag for a MultivalueInstance column in the table

Multivalued

Not supported.

Multivalued and the same as a property tag for a non- MultivalueInstance column in the table

Single-valued

All RelOp values supported.

In this case, the client has previously called the RopSetColumns ROP without the MultivalueInstance bit set in the property tag that matches the value in the PropTag field. Each value of the property PropTag field is compared with the value of the TaggedValue field. For all RelOp values except RelationalOperatorNotEqual, one successful match means that the restriction (2) is satisfied. For RelationalOperatorNotEqual, the restriction (2) is satisfied when there are no matches.

Multivalued and the same as a property tag for a non-MultivalueInstance column in the table

Multi-valued

Not supported.

In the context of a RopFindRow ([MS-OXCROPS] section 2.2.5.13) or RopRestrict ([MS-OXCROPS] section 2.2.5.3) ROP call, the results are undefined if the value of the property PropTag field does not exist on the object being tested. By creating an AndRestriction structure that joins the property restriction with an ExistRestriction, a caller can be guaranteed accurate results. Only RelationalOperatorEqual and RelationalOperatorNotEqual operators are allowed for the RelOp field when the type of the value of the PropTag field is PtypBoolean.