2.2.6.1.1 ColumnPacket Structure

The ColumnPacket structure MUST contain the information of a single column, including the property ID, property type, and display attributes. The ColumnPacket structure contains the following fields.


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

PropertyType

PropertyID

Cx

Reserved1

Flags

Reserved2

...

...

Kind

ID

Guid

...

...

...

BufferLength

Buffer (variable)

...

PropertyType (2 bytes):  This field MUST exist. This field specifies the type of the property, as specified in section 2.2.6.1.3.

PropertyID (2 bytes):  This field MUST exist. This field has the same value as the ID field. If the value of the ID field does not fit into a WORD ([MS-DTYP]), the value MUST be truncated and the two least significant bytes MUST be stored in this field.

Cx (4 bytes):  This field MUST exist. This field specifies the column width in pixels.

Reserved1 (4 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.

Flags (4 bytes):  This field MUST exist. This field contains column descriptor flags. The bit setting and its meaning are listed in the following table.

Flag name

Value

Meaning

VCDF_RIGHT_JUSTIFY

0x00000001

Column is right justified. This flag is mutually exclusive with the VCDF_CENTER_JUSTIFY flag.

VCDF_CENTER_JUSTIFY

0x00000002

Column is center justified. This flag is mutually exclusive with the VCDF_RIGHT_JUSTIFY flag.

VCDF_BITMAP

0x00000008

Column header is in bitmap format.

VCDF_NOT_SORTABLE

0x00000020

Column is not sortable. This flag is mutually exclusive with the VCDF_SORTDESCENDING flag and the VCDF_SORTDLG flag.

VCDF_SORTDESCENDING

0x00000040

Column is sorted in descending order. This flag is mutually exclusive with the VCDF_NOT_SORTABLE flag.

VCDF_MOVEABLE

0x00000100

Clients and servers MUST ignore this setting.

VCDF_COLUMNSDLG

0x00000200

Clients and servers MUST ignore this setting.

VCDF_SORTDLG

0x00000400

Column MUST be able to be sorted. This flag is mutually exclusive with the VCDF_NOT_SORTABLE flag.

VCDF_GROUPDLG

0x00000800

Column MUST be able to be grouped.

VCDF_NAMEDPROP

0x00001000

The optional Guid field MUST be included in the packet. If Kind is KindString, then the BufferLength and Buffer fields MUST also be included in the packet.

VCDF_RCOLUMNSDLG

0x00002000

Clients and servers MUST ignore this setting.

VCDF_MULTIVALUED

0x00004000

Specifies whether the column PropertyType field MUST include the VCDF_MULTIVALUED flag ([MS-OXCDATA] section 2.11.1.3).

Reserved2 (12 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.

Kind (4 bytes):  This field MUST exist. The field contains one of the following values.

Value name

Value

Meaning

KindID

0x00000000

The property uses an integer identifier.

KindString

0x00000001

The property uses a string identifier.

ID (4 bytes):  This field MUST exist. If the VCDF_NAMEDPROP flag is not set in the Flags field, this field contains the property ID of the column. If the VCDF_NAMEDPROP flag is set in the Flags field, and the value of the Kind field is "KindID", this field contains the integer ID that MUST be used with the RopGetPropertyIdsFromNames remote operation (ROP) ([MS-OXCROPS] section 2.2.8.1) to translate the named property into a property ID. If the VCDF_NAMEDPROP flag is set and the value of Kind is "KindString", the application can fill this field with any value when writing the stream and MUST ignore the value of this field when reading the stream.

Guid (16 bytes):  If the VCDF_NAMEDPROP flag is set in the Flags field, this field contains the GUID that MUST be used with the RopGetPropertyIdsFromNames ROP to translate the named property into a property ID. If the VCDF_NAMEDPROP flag is not set, the application MUST omit this field.

BufferLength (4 bytes):  If the VCDF_NAMEDPROP flag is set in the Flags field and the value of the Kind field is "KindString", this field contains the length of the Buffer field in bytes, including the Unicode terminating null character (0x0000). Otherwise, the application MUST omit this field.

Buffer (variable):  If the VCDF_NAMEDPROP flag is set in the Flags field and the value of the Kind field is "KindString", this field contains the Unicode string that MUST be used with the RopGetPropertyIdsFromNames ROP to translate the named property into a property ID. Otherwise, the application MUST omit this field. This field includes a Unicode terminating null character (0x0000).