Property Set Implementations in COM
While the potential for uses of persistent property sets is not fully tapped, there are currently two primary uses:
- Storing summary information with an object such as a document
- Transferring property data between objects
COM property sets were designed to store data that is suited to representation as a moderately sized collection of fine-grained values. Data sets that are too large for this to be feasible should be broken into separate streams, storages, and/or property sets. The COM property set data format was not meant to provide a substitute for a database of many tiny objects.
COM provides implementations of the property set interfaces for various objects, along with three helper functions. The following section describes some performance characteristics of these implementations. For more information on specific interfaces and how to get a pointer to these interfaces, refer to the following in the COM reference section:
IPropertySetStorage–Compound File Implementation
The compound file implementation, which provides the IStorage and IStream interfaces, also provides the IPropertySetStorage and IPropertyStorage interfaces. Given a compound file implementation of IStorage, the IPropertySetStorage interface can be obtained by calling IUnknown::QueryInterface.
IPropertySetStorage–NTFS File System Implementation
The IPropertySetStorage and IPropertyStorage interfaces can also be obtained for NTFS files that are not compound files. Therefore, it is possible to obtain these interfaces for all files on an NTFS volume.
When this implementation of IPropertySetStorage and IPropertyStorage is instantiated, it is given a pointer to an object that supports the IStorage interface. It then manipulates property set storages within that storage object. Thus, it is possible to access and manipulate property sets on any object that supports .
IPropertySetStorage Implementation Considerations
There are several issues to consider in providing an implementation of the IPropertySetStorage interface. Please refer to these Implementation Considerations in the COM Reference section.
In addition, there are four helper functions, designed to aid in dealing with properties that have been read from a property set into memory (into a PROPVARIANT structure):
The following sections discuss property set implementations in COM in greater detail:
- Managing Property Sets
- Property Set Considerations
- Storing Property Sets
- Performance Characteristics
- Implementing the Summary Information Property Set
- IPropertySetStorage Implementation Considerations