# OLE Serialized Property Set Format

Persistent property sets provide a way to store information within file system entities. It is recommended that to create and manage them, you use the IPropertySetStorage and IPropertyStorage interfaces as described in the section of the Structured Storage chapter entitled Persistent Property Sets.

Property sets are made up of a tagged section of values, with the section uniquely identified by a Format Identifier (FMTID). Every property consists of a property identifier and a type indicator that represents a value. Each value stored in a property set has a unique property identifier that distinguishes the property. The type indicator describes the representation of the data in the value.

When you use the IPropertySetStorage and IPropertyStorage interfaces, you do not have to deal directly with the OLE serialized property set format structure. However, for those who are interested, this Appendix describes this format.

All data elements within a property set are stored in Intel representation (that is, in little-endian byte order).

OLE defines a standard, serialized data format for property sets. When you are dealing directly with the serialized format, and not with the interfaces, property sets have the following characteristics:

- Property sets allow for different applications to create their own independent property sets to serve the application’s needs.

- Property sets can be stored in a single IStream instance or in an IStorage instance containing multiple streams. Indeed, in the abstract, property sets are simply another data type that can be stored in many different forms of an in-memory or on-disk storage. For recommended conventions on creating the string name for the storage object, see the section “Naming Property Sets” later in this appendix.

- Property sets allow for a dictionary of displayable names to be included to further describe the contents. A set of conventions for choosing property names is recommended. For more information on this optional dictionary, see “Property ID 0” later in this appendix.

The property set stream is divided into three major parts:

- Header

- FORMATID/offset pair

- Section containing the actual property set values

The overall length of the property set stream must be less than or equal to 256K. The following sections of this chapter describe the individual components that make up the property set data format, as shown in the previous figure.

Note Previous versions of this document described extensions to the property set stream with more than one section allowed, but that has been revised now to provide for one section in the property stream. The one exception is the DocumentSummaryInformation property set, described in the section The DocumentSummaryInformation Property Set.