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 |