# IPropertySetStorage

Creates, opens, deletes, and enumerates property set storages that support instances of the IPropertyStorage interface. The IPropertyStorage interface manages a single property set in a property storage subobject; the IPropertySetStorage interface manages the storage of groups of such property sets. IPropertySetStorage can be supported by any file system entity, and is currently implemented in the OLE compound file object.

The IPropertySetStorage and IPropertyStorage interfaces provide a uniform way to create and manage property sets, whether or not these sets reside in a storage object that supports IStorage. When called through an object supporting IStorage (such as structured and compound files and directories) or IStream, the property sets created conform to the OLE property set format, described in detail in Appendix C of the OLE Programming Guide. Similarly, properties written using IStorage to the OLE property set format are visible through IPropertySetStorage and IPropertyStorage. IPropertyStorage does not support extensions to the OLE serialized property set format or multiple sections, because you can get equivalent functionality as simply by creating new sets or by adding new properties to existing property sets.

IPropertySetStorage methods identify property sets through a GUID called a format identifier (FMTID). The FMTID for a property set identifies the set of property identifiers in the property set, their meaning, and any constraints on the values. The format identifier of a property set should also provide the means to manipulate that property set. Only one instance of a given FMTID may exist at a time within a single property storage.

##### When to Implement

Implement IPropertySetStorage to store persistent properties in the file system. If you are using the OLE compound files implementation, you can use the implementation on the compound file object created through a call to StgCreateDocfile or StgOpenStorage. Once you have a pointer to any of the interface implementations (such as IStorage) on this object, you can call QueryInterface to get a pointer to the IPropertySetStorage interface implementation.

##### When to Use

Call IPropertySetStorage methods to create, open, or delete one or more property sets, or to enumerate the property sets contained in this property set storage.

Methods in Vtable Order

IUnknown Methods | Description
QueryInterface | Returns pointers to supported interfaces.
AddRef | Increments reference count.
Release | Decrements reference count.

IPropertySetStorage Methods | Description
Create | Creates a new property set.
Open | Opens a previously created property set.
Delete | Deletes an existing property set.
Enum | Creates and retrieves a pointer to an object that can be used to enumerate property sets.

See Also

IPropertyStorage, IEnumSTATPROPSETSTG, STATPROPSETSTG, PROPVARIANT