2.2.6.1 PidTagViewDescriptorBinary Property

Type: PtypBinary ([MS-OXCDATA] section 2.11.1)

View definitions, as specified in section 2.2.6, MUST be stored in the PidTagViewDescriptorBinary property ([MS-OXPROPS] section 2.1056) of the message.<16> The property is in binary format, and the packet structure is specified as follows.


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

Reserved1

...

Version

ulFlags

Pres

Cvcd

ivcdSort

cCat

ulCatSort

Reserved2

...

...

...

...

...

ColumnInfo (variable)

...

RestrictionInfo (variable)

...

Reserved1 (8 bytes):  This field MUST exist. The application can fill this field with any value when writing the stream. The application MUST ignore the value of this field when reading the stream.

Version (4 bytes):  This field MUST exist. This is a fixed value of 0x00000008.

ulFlags (4 bytes):  This field MUST exist. This specifies the sort order of the sorted column. The value of this field MUST be one of the following.

Value

Meaning

0x00000000

Ascending sort order

0x00000002

Descending sort order

The index of the sorted column is indicated in the ivcdSort field in the packet.

Pres (4 bytes):  This field MUST exist. This field is filled with arbitrary value by the client and SHOULD NOT be used by the server.

Cvcd (4 bytes):  This field MUST exist. This field specifies the number of ColumnPacket structures that are contained in the ColumnInfo field.

ivcdSort (4 bytes):  This field MUST exist. The value of this field MUST be one of the following:

0 through (Cvcd-1): This value is an index into the ColumnInfo fields. The table MUST be sorted by that column. The sort order, ascending or descending, MUST be specified in the ulFlags field.

0xFFFFFFFF: The table MUST be arranged by conversation.

cCat (4 bytes):  This field MUST exist. This field specifies the number of "group by" columns that are stored in ColumnInfo fields. The minimum value for this field is 0. The maximum value is either 4 or the value of the Cvcd field, whichever is least.

ulCatSort (4 bytes):  This field MUST exist. This field uses bit flags to specify the ascending or descending order of the "group by" columns. The flags are specified as follows. In each case, if the flag is not set, the "group by" column is in descending order.

Flag

Meaning

0x00000001

If this flag is set, the first "group by" column is in ascending order.

0x00000002

If this flag is set, the second "group by" column is in ascending order.

0x00000004

If this flag is set, the third "group by" column is in ascending order.

0x00000008

If this flag is set, the fourth "group by" column is in ascending order.

Reserved2 (24 bytes):  This field MUST exist. The application can fill this field with any value when writing the stream. The application MUST ignore the value of this field when reading the stream.

ColumnInfo (variable):  Data type: array of ColumnPacket structures, as specified in section 2.2.6.1.1. The number of ColumnPacket structures contained in this field is indicated by the Cvcd field. This field MUST exist. This is where all the column information is stored, including "blank" column, "group by" columns, "visible" columns, and "order by" column.

The columns are stored in the following sequence in the packet:

The "blank" column: This is a single column that MUST have the following settings.

Field name

Value

PropertyType

0x0001

PropertyID

0x0004

Cx

0x00000007

Flags

0x00000028 (VCDF_BITMAP | VCDF_NOT_SORTABLE)

Kind

0x00000000

ID

0x00000004

The "group by" columns: The number of the "group by" columns MUST be stored in cCat field in the packet. Each bit in the ulCatSort field MUST specify whether the corresponding "group by" column is in ascending or descending order.

The "visible" columns: All columns that MUST be visible to users excluding the "group by" columns.

The "order by" column: If the sorted column is not a "group by" or "visible" column, it MUST be stored here.

RestrictionInfo (variable):  Data type: RestrictionPacket structure, as specified in section 2.2.6.1.2. This field is where the restriction of the table view MUST be stored.