IEnumSTATPROPSETSTG-Compound 文件实现

IEnumSTATPROPSETSTG 接口的复合文件实现用于枚举包含统计属性数据的 STATPROPSETSTG 结构的数组。 IPropertySetStorage 实现管理统计数据,并与当前复合文件存储对象相关联。

何时使用

调用 IEnumSTATPROPSETSTG 的方法以枚举 STATPROPSETSTG 结构,其中每个结构都提供有关与复合文件存储对象关联的属性集之一的数据。

备注

IEnumSTATPROPSETSTG::Next

获取下一个或多个 STATPROPSETSTG 结构, (数字是由 celt 参数) 指定的。 通过调用 IEnumSTATPROPSETSTG ::Next 的复合文件实现提供的 STATPROPSETSTG 元素遵循以下规则:

  • 如果 IEnumSTATPROPSETSTG::Next 无法提供 STATPROPSETSTG.fmtid,则将零写入该成员。 当属性集没有预定义名称 ((如 \005SummaryInformation) )并且不是法定值时,会出现这种情况。
  • DocumentSummaryInformation 和 UserDefined 属性集是特殊的,因为它可能有两个属性集部分。 DocumentSummaryInformation 和用户定义属性集部分介绍了此属性集。 第二部分称为“User-Defined属性”。 每个部分都使用 FMTID) (唯一格式标识符进行标识。 使用 IPropertySetStorage::Enum 枚举属性集时,将不会枚举User-Defined属性集。

注意

如果始终使用 IPropertySetStorage::Create 创建属性集,则由于为存储名称创建了“Character GUID”, 因此 IEnumSTATPROPSETSTG::Next 将为属性集 [STATPROPSETSTG.fmtid] 返回非零有效的 FMTID。

 

  • STATPROPSETSTG.grfFlags 成员不一定反映属性集是否为 ANSI。 如果设置了PROPSETFLAG_ANSI,则属性集肯定为 ANSI。 如果PROPSETFLAG_ANSI明确,则属性集可以是 Unicode 或非 Unicode,因为如果不打开它,就无法判断它是否为 ANSI。
  • STATPROPSETSTG.grfFlags 成员确实反映属性集是否简单,因此PROPSETFLAG_NONSIMPLE标志的设置始终有效。
  • 如果 IEnumSTATPROPSETSTG::Next 无法提供 STATPROPSETSTG.clsid,则它设置为 (CLSID_NULL) 的所有零。 在 COM 复合文件实现中,当属性集简单 (PROPSETFLAG_NONSIMPLE标志未设置) ,或者不简单,但未显式设置 CLSID 时,将发生这种情况。 对于非简单属性集,收到的 CLSID 是由基础 IStorage 维护的 CLSID
  • 如果 IEnumSTATPROPSETSTG::Next 无法提供时间字段 [ctimemtimeatime],则每个不支持的时间都将设置为零。 在 COM 复合文件实现中,获取这些值取决于从基础 IStorage 实现中检索它们。

IEnumSTATPROPSETSTG::Skip

跳过 celt 中指定的元素数。 如果跳过指定数量的元素,则返回S_OK,如果跳过的元素少于请求的元素,则返回S_FALSE。 在任何其他情况下,返回相应的错误。

IEnumSTATPROPSETSTG::Reset

将光标设置为枚举的开头。 如果成功,则返回S_OK,否则返回STG_E_INVALIDHANDLE。

IEnumSTATPROPSETSTG::Clone

复制此枚举器的当前枚举状态。