IPropertySetStorage-Compound 文件实现

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

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

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

何时使用 IPropertySetStorage

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

方法

IPropertySetStorage::Create

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

IPropertySetStorage::Open

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

IPropertySetStorage::D elete

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

IPropertySetStorage::Enum

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

言论

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

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

注意

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

 

IPropertyStorage - 复合文件实现

IPropertySetStorage

IPropertyStorage

IStorage::EnumElements

PROPSETFLAG 常量

STATPROPSETSTG