Home COM GDI+ WebBrowser Data Access

IPropertySetStorage Interface

 

IID_IPropertySetStorage

{0000013A-0000-0000-C000-000000000046}

 

 

The IPropertySetStorage interface 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; and the IPropertySetStorage interface manages the storage of groups of such property sets. Any file system entity can support IPropertySetStorage that is currently implemented in the COM 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) or IStream, the property sets created conform to the COM property set format, described in detail in Structured Storage Serialized Property Set Format. Similarly, properties written using IStorage to the COM property set format are visible through IPropertySetStorage and IPropertyStorage.

 

IPropertySetStorage methods identify property sets through a globally unique identifier (GUID) called a format identifier (FMTID). The FMTID for a property set identifies the property identifiers in the property set, their meaning, and any constraints on the values. The FMTID 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.

 

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.

 

Note  There is an exception to the above in The DocumentSummaryInformation and UserDefined property set. This property set is unique in that it may have two property set sections in a single underlying stream. This property set is described in The DocumentSummaryInformation and UserDefined Property Sets. The first section is the DocumentSummaryInformation property set. The second section is the UserDefined property set. Each section is identified by a unique format identifier (FMTID). For example, FMTID_DocSummaryInformation and FMTID_UserDefined property set. The fact that these two property sets can exist in a single stream affects the behavior of the IPropertySetStorage interface.

 

When IPropertySetStorage::Create is called to create the UserDefined property set, the first section is created automatically. Once the FMTID_UserDefinedProperties is created, FMTID_DocSummaryInformation need not be created, but can be operend with a call to IPropertySetStorage::Open. Creating the first section does not automatically create the second section and it is not possible to open both sections simultaneously.

 

Calling IPropertySetStorage::Delete, to delete the first section, causes both sections to be deleted. In other words, calling IPropertySetStorage::Delete with FMTID_DocSummaryInformation causes both that section and the FMTID_UserDefinedProperties section to be deleted. However, deleting the second section does not automatically delete the first section.

 

When IPropertySetStorage::Enum is used to enumerate property sets, the UserDefined property set is not enumerated.

 

 

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.

 

QueryInterface

 

FUNCTION IPropertySetStorage_QueryInterface ( _

  BYVAL pthis AS DWORD PTR _

, BYREF riid AS GUID _

, BYREF ppvObj AS DWORD _

  ) AS LONG


  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[0] USING IPropertySetStorage_QueryInterface (pthis, riid, ppvObj) TO HRESULT
  FUNCTION = HRESULT
 

END FUNCTION

 

 

AddRef

 

FUNCTION IPropertySetStorage_AddRef ( _

  BYVAL pthis AS DWORD PTR _

  ) AS DWORD
 

  LOCAL DWRESULT AS LONG
  CALL DWORD @@pthis[1] USING IPropertySetStorage_AddRef (pthis) TO DWRESULT
  FUNCTION = DWRESULT
 

END FUNCTION

 

 

Release

 

FUNCTION IPropertySetStorage_Release ( _

  BYVAL pthis AS DWORD PTR _

  ) AS DWORD
 

  LOCAL DWRESULT AS DWORD
  CALL DWORD @@pthis[2] USING IPropertySetStorage_Release (pthis) TO DWRESULT
  FUNCTION = DWRESULT
 

END FUNCTION

 

 

Create

 

FUNCTION IPropertySetStorage_Create ( _

  BYVAL pthis AS DWORD PTR _

, BYREF rfmtid AS GUID _

, BYREF pclsid AS GUID _

, BYVAL grfFlags AS DWORD _

, BYVAL grfMode AS DWORD _

, BYREF ppprstg AS DWORD _

  ) AS LONG
 

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[3] USING IPropertySetStorage_Create (pthis, rfmtid, pclsid, grfFlags, grfMode, ppprstg) TO HRESULT
  FUNCTION = HRESULT
 

END FUNCTION

 

 

Open

 

FUNCTION IPropertySetStorage_Open ( _

  BYVAL pthis AS DWORD PTR _

, BYREF rfmtid AS GUID _

, BYVAL grfMode AS DWORD _

, BYREF ppprstg AS DWORD _

  ) AS LONG
 

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[4] USING IPropertySetStorage_Open (pthis, rfmtid, grfMode, ppprstg) TO HRESULT
  FUNCTION = HRESULT
 

END FUNCTION

 

 

Delete

 

FUNCTION IPropertySetStorage_Delete ( _

  BYVAL pthis AS DWORD PTR _

, BYREF rfmtid AS GUID _

  ) AS LONG
 

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[5] USING IPropertySetStorage_Delete (pthis, rfmtid) TO HRESULT
  FUNCTION = HRESULT
 

END FUNCTION

 

 

Enum

 

FUNCTION IPropertySetStorage_Enum ( _

  BYVAL pthis AS DWORD PTR _

, BYREF ppenum AS DWORD _

  ) AS LONG
 

  LOCAL HRESULT AS LONG
  CALL DWORD @@pthis[6] USING IPropertySetStorage_Enum (pthis, ppenum) TO HRESULT
  FUNCTION = HRESULT
 

END FUNCTION

 

 

Page last updated on Monday, 27 March 2006 10:35:42 +0100