IEnumSTATPROPSETSTG-Compound 文件实现

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

何时使用

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

言论

IEnumSTATPROPSETSTG::Next

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

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

注意

如果始终使用 IPropertySetStorage::Create创建属性集,则由于为存储名称创建了“字符 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维护的。
  • 如果 IEnumSTATPROPSETSTG::Next 无法提供时间字段 [ctimemtimeatime],则每个不支持的时间将设置为零。 在 COM 复合文件实现中,获取这些值取决于从基础 IStorage 实现中检索这些值。

IEnumSTATPROPSETSTG::Skip

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

IEnumSTATPROPSETSTG::Reset

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

IEnumSTATPROPSETSTG::Clone

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