The DocumentSummaryInformation and UserDefined Property Sets

A DocumentSummaryInformation and UserDefined property set is an extension to the Summary Information property set. Both property sets can exist simultaneously.

The name of the stream that contains the DocumentSummaryInformation property set is "\005DocumentSummaryInformation". The format identifier (FMTID) for the DocumentSummaryInformation property set is D5CDD502-2E9C-101B-9397-08002B2CF9AE.

The declaration for this value is available in the provided header files as FMTID_DocSummaryInformation. For more information, see Names in IStorage, The Summary Information Property Set, IPropertySetStorage::Create and Format Identifiers.

This stream also has a separate section for the custom-user-defined properties as in the DocumentSummaryInformation and UserDefined property sets. This section appears in the IPropertySetStorage interface as a separate property set, with the following FMTID (available as FMTID_UserDefinedProperties): D5CDD505-2E9C-101B-9397-08002B2CF9AE.

These two property sets are the only ones for which a single stream can hold multiple property sets. The fact that these two property sets are in a single stream affects the behavior of the IPropertySetStorage interface. For more information, see IPropertySetStorage.

The following table lists the added properties to the DocumentSummaryInformation and UserDefined property set. As in the SummaryInformation property set, the names are not typically stored in the property set, but are inferred from the property identifier.

Property name Property identifier Property identifier value VARIANT type
Category PIDDSI_CATEGORY 0x00000002 VT_LPSTR
PresentationTarget PIDDSI_PRESFORMAT 0x00000003 VT_LPSTR
Bytes PIDDSI_BYTECOUNT 0x00000004 VT_I4
Lines PIDDSI_LINECOUNT 0x00000005 VT_I4
Paragraphs PIDDSI_PARCOUNT 0x00000006 VT_I4
Slides PIDDSI_SLIDECOUNT 0x00000007 VT_I4
Notes PIDDSI_NOTECOUNT 0x00000008 VT_I4
HiddenSlides PIDDSI_HIDDENCOUNT 0x00000009 VT_I4
MMClips PIDDSI_MMCLIPCOUNT 0x0000000A VT_I4
ScaleCrop PIDDSI_SCALE 0x0000000B VT_BOOL
HeadingPairs PIDDSI_HEADINGPAIR 0x0000000C VT_VARIANT | VT_VECTOR
TitlesofParts PIDDSI_DOCPARTS 0x0000000D VT_VECTOR | VT_LPSTR
Manager PIDDSI_MANAGER 0x0000000E VT_LPSTR
Company PIDDSI_COMPANY 0x0000000F VT_LPSTR
LinksUpToDate PIDDSI_LINKSDIRTY 0x00000010 VT_BOOL

 

These properties have the following uses:

Category

A text string typed by the user that indicates what category the file belongs to (memo, proposal, and so on). It is useful for finding files of same type.

PresentationTarget

Target format for presentation (35mm, printer, video, and so on).

Bytes

Number of bytes.

Lines

Number of lines.

Paragraphs

Number of paragraphs.

Slides

Number of slides.

Notes

Number of pages that contain notes.

HiddenSlides

Number of slides that are hidden.

MMClips

Number of sound or video clips.

ScaleCrop

Set to True (-1) when scaling of the thumbnail is desired. If not set, cropping is desired.

HeadingPairs

Internally used property indicating the grouping of different document parts and the number of items in each group. The titles of the document parts are stored in the TitlesofParts property. The HeadingPairs property is stored as a vector of variants, in repeating pairs of VT_LPSTR (or VT_LPWSTR) and VT_I4 values. The VT_LPSTR value represents a heading name, and the VT_I4 value indicates the count of document parts under that heading.

TitlesofParts

Names of document parts.

Manager

Manager of the project.

Company

Company name.

LinksUpToDate

Boolean value to indicate whether the custom links are hampered by excessive noise, for all applications.

Note

As described in 12.3. Serialized Format for Property Sets of the OLE 2.0 Design Specification, vector elements in the HeadingPairs and TitlesofParts properties should be aligned on 32 bit boundaries within the property set. However, in the DocumentSummaryInformation and UserDefined property sets, when the code page of the property set is not Unicode, these elements must be packed.

 

The UserDefined property set can be used to hold any properties. Typically, it is used to store named properties created by a user.