2.11.1 Property Data Types

For all variants, the structure of a property value is the same and is specified by the property data type, whether or not the property data type is actually encoded in the buffer. The following table lists both the property data type identifiers and the format of the property values. Web Distributed Authoring and Versioning Protocol (WebDAV) property data type identifiers are specified in section 2.11.1.6.

There is one variation in the width of count fields. In the context of ROP buffers, such as the RopGetPropertiesSpecific ROP ([MS-OXCROPS] section 2.2.8.3), byte counts for PtypBinary property values are 16 bits wide and value counts for all PtypMultiple property values are 32 bits wide. However, in the context of extended rules, as specified in [MS-OXORULE] section 2.2.4, and in the context of the MAPI extensions for HTTP, as specified in [MS-OXCMAPIHTTP] section 2.2.5, byte counts for PtypBinary property values and value counts for PtypMultiple property values are 32 bits wide. Such count fields have a width designation of COUNT, as specified in section 2.11.1.1, rather than an explicit width, as throughout section 2.11.

In the context of a table operation, properties are referred to as columns. The format of property identifiers, types, and values in table operations such as the RopQueryRows ROP ([MS-OXCROPS] section 2.2.5.4) is the same as in property operations such as the RopGetPropertiesSpecific ROP. Property data types are presented in the following table. The property data type values specified are 16-bit integers. The Name Service Provider Interface (NSPI) Protocol, as specified in [MS-NSPI], uses the same numeric values but expresses them as 32-bit integers, with the high-order 16 bits of the 32-bit representation set to 0x0000.

Property type name

Property type value

Property type specification

Alternate names

PtypInteger16

0x0002,

%x02.00

2 bytes; a 16-bit integer

[MS-DTYP]: INT16

PT_SHORT, PT_I2, i2, ui2

PtypInteger32

0x0003,

%x03.00

4 bytes; a 32-bit integer

[MS-DTYP]: INT32

PT_LONG, PT_I4, int, ui4

PtypFloating32

0x0004,

%x04.00

4 bytes; a 32-bit floating point number

[MS-DTYP]: FLOAT

PT_FLOAT, PT_R4, float, r4

PtypFloating64

0x0005,

%x05.00

8 bytes; a 64-bit floating point number

[MS-DTYP]: DOUBLE

PT_DOUBLE, PT_R8, r8

PtypCurrency

0x0006,

%x06.00

8 bytes; a 64-bit signed, scaled integer representation of a decimal currency value, with four places to the right of the decimal point

[MS-DTYP]: LONGLONG

[MS-OAUT]: CURRENCY

PT_CURRENCY, fixed.14.4

PtypFloatingTime

0x0007,

%x07.00

8 bytes; a 64-bit floating point number in which the whole number part represents the number of days since December 30, 1899, and the fractional part represents the fraction of a day since midnight

[MS-DTYP]: DOUBLE

[MS-OAUT]: DATE

PT_APPTIME

PtypErrorCode

0x000A,

%x0A.00

4 bytes; a 32-bit integer encoding error information as specified in section 2.4.1.

PT_ERROR

PtypBoolean

0x000B,

%x0B.00

1 byte; restricted to 1 or 0

[MS-DTYP]: BOOLEAN

PT_BOOLEAN. bool

PtypInteger64

0x0014,

%x14.00

8 bytes; a 64-bit integer

[MS-DTYP]: LONGLONG

PT_LONGLONG, PT_I8, i8, ui8

PtypString

0x001F,

%x1F.00

Variable size; a string of Unicode characters in UTF-16LE format encoding with terminating null character (0x0000).

PT_UNICODE, string

PtypString8

0x001E,

%z1E.00

Variable size; a string of multibyte characters in externally specified encoding with terminating null character (single 0 byte).

PT_STRING8

PtypTime

0x0040,

%x40.00

8 bytes; a 64-bit integer representing the number of 100-nanosecond intervals since January 1, 1601

[MS-DTYP]: FILETIME

PT_SYSTIME, time, datetime, datetime.tz, datetime.rfc1123, Date, time, time.tz

PtypGuid

0x0048,

%x48.00

16 bytes; a GUID with Data1, Data2, and Data3 fields in little-endian format

[MS-DTYP]: GUID

PT_CLSID, UUID

PtypServerId

0x00FB,

%xFB.00

Variable size; a 16-bit COUNT field followed by a structure as specified in section 2.11.1.4.

PT_SVREID

PtypRestriction

0x00FD,

%xFD.00

Variable size; a byte array representing one or more Restriction structures as specified in section 2.12.

PT_SRESTRICT

PtypRuleAction

0x00FE,

%xFE.00

Variable size; a 16-bit COUNT field followed by that many rule action structures, as specified in [MS-OXORULE] section 2.2.5.

PT_ACTIONS

PtypBinary

0x0102,

%x02.01

Variable size; a COUNT field followed by that many bytes.

PT_BINARY

PtypMultipleInteger16

0x1002,

%x02.10

Variable size; a COUNT field followed by that many PtypInteger16 values.

PT_MV_SHORT, PT_MV_I2, mv.i2

PtypMultipleInteger32

0x1003,

%x03.10

Variable size; a COUNT field followed by that many PtypInteger32 values.

PT_MV_LONG, PT_MV_I4, mv.i4

PtypMultipleFloating32

0x1004,

%x04.10

Variable size; a COUNT field followed by that many PtypFloating32 values.

PT_MV_FLOAT, PT_MV_R4, mv.float

PtypMultipleFloating64

0x1005,

%x05.10

Variable size; a COUNT field followed by that many PtypFloating64 values.

PT_MV_DOUBLE, PT_MV_R8

PtypMultipleCurrency

0x1006,

%x06.10

Variable size; a COUNT field followed by that many PtypCurrency values.

PT_MV_CURRENCY, mv.fixed.14.4

PtypMultipleFloatingTime

0x1007,

%x07.10

Variable size; a COUNT field followed by that many PtypFloatingTime values.

PT_MV_APPTIME

PtypMultipleInteger64

0x1014,

%x14.10

Variable size; a COUNT field followed by that many PtypInteger64 values.

PT_MV_I8, PT_MV_LONGLONG

PtypMultipleString

0x101F,

%x1F.10

Variable size; a COUNT field followed by that many PtypString values.

PT_MV_UNICODE

PtypMultipleString8

0x101E,

%x1E.10

Variable size; a COUNT field followed by that many PtypString8 values.

PT_MV_STRING8, mv.string

PtypMultipleTime

0x1040,

%x40.10

Variable size; a COUNT field followed by that many PtypTime values.

PT_MV_SYSTIME

PtypMultipleGuid

0x1048,

%x48.10

Variable size; a COUNT field followed by that many PtypGuid values.

PT_MV_CLSID, mv.uuid

PtypMultipleBinary

0x1102,

%x02.11

Variable size; a COUNT field followed by that many PtypBinary values.

PT_MV_BINARY, mv.bin.hex

PtypUnspecified

0x0000,

%x00.00

Any: this property type value matches any type; a server MUST return the actual type in its response. Servers MUST NOT return this type in response to a client request other than NspiGetIDsFromNames or the RopGetPropertyIdsFromNames ROP request ([MS-OXCROPS] section 2.2.8.1).

PT_UNSPECIFIED

PtypNull

0x0001,

%x01.00

None: This property is a placeholder.

PT_NULL

PtypObject or PtypEmbeddedTable

0x000D,

%x0D.00

The property value is a Component Object Model (COM) object, as specified in section 2.11.1.5.

PT_OBJECT