IPropertySetStorage-Compound 文件实现

COM 复合文件存储对象实现包括 IPropertyStorage(管理单个永久性属性集的接口)和 IPropertySetStorage(管理持久属性集组的接口)的实现。

若要获取指向 IPropertySetStorage 复合文件实现的指针,请将标识符IID_IStorage的标头定义名称指定为 riid 参数,或使用 StgCreateStorageExStgOpenStorageEx 函数。 在这两种情况下,请将 STGFMT_STORAGE 指定为 stgfmt 参数。 也可以在 StgOpenStorageEx.) 的情况下指定 (STGFMT_ANY 此外,将接口标识符的标头定义名称指定为 riid 参数 (IID) IID_IPropertySetStorage。 这两个函数都提供指向对象 IPropertySetStorage 接口的 指针。

获取指向复合文件实现的指针的另一种方法是指定标识符的标头定义名称IID_IStorage作为 riid 参数,或使用 StgCreateDocfileStgOpenStorage 函数。 这将提供指向对象 IStorage 接口的指针。 如果要处理永久性属性集,请为 IPropertySetStorage 接口调用 IStorage::QueryInterface

何时使用 IPropertySetStorage

调用 IPropertySetStorage 的方法,以在当前复合文件属性集存储中创建、打开或删除属性集。 还有一个方法 IPropertySetStorage::Enum,该方法提供指向可用于枚举存储中的属性集的枚举器的指针。

方法

IPropertySetStorage::Create

在当前复合文件存储中创建一个新属性集,并在返回时提供指向 IPropertyStorage 复合文件实现的接口指针。 在此实现中,仅当指定PROPSETFLAG_NONSIMPLE时,才能处理属性集。 此方法要求STGM_SHARE_EXCLUSIVE grfMode 参数中指定的共享模式,并且访问模式为STGM_READ或STGM_READWRITE (STGM_WRITE模式不受支持) 。

IPropertySetStorage::Open

打开当前属性存储中的现有属性集。 返回时,它提供指向 IPropertyStorage 的复合文件实现的接口指针。 此方法要求STGM_SHARE_EXCLUSIVE grfMode 参数中指定的共享模式,并且) 不支持STGM_READ或STGM_READWRITE (STGM_WRITE访问模式。

IPropertySetStorage::D elete

删除此属性存储中的属性集。

IPropertySetStorage::Enum

创建用于枚举 STATPROPSETSTG 结构的 对象。 每个 STATPROPSETSTG 结构都提供有关单个属性集的数据。

备注

从 Windows 2000 开始, IPropertySetStorage 的复合文件实现支持简单模式。 简单模式是通过为 StgCreateStorageEx 和 StgOpenStorageEx 函数指定STGM_SIMPLE标志来指示 。 如果在简单模式下打开复合文件,则关联的 IPropertySetStorage 实现将受到限制,如下所示:

无法处理简单属性集。 除非还在 grfFlags 参数中指定PROPSETFLAG_NONSIMPLE,否则不能在 CreateOpen 方法的 grfmode 参数中指定STGM_TRANSACTED。 请注意,简单和非简单属性集与上述简单模式属性集无关。 有关简单和非简单属性集的详细信息,请参阅 属性集的存储和流对象

注意

DocumentSummaryInformation 和 UserDefined 属性集是唯一的,因为它们可能具有两个属性集部分。 有关详细信息,请参阅 DocumentSummaryInformation 和用户定义属性集

 

IPropertyStorage - 复合文件实现

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

PROPSETFLAG 常量

STATPROPSETSTG