IPropertyStorage-NTFS 文件系统实现

当文件不是复合文件时,NTFS 版本 5.0 为 NTFS 卷上的文件提供 IPropertyStorage 接口的实现。

获取指向 IPropertySetStorage 的 NTFS 文件系统实现的指针

  1. 使用 IPropertySetStorage 的 NTFS 实现调用 IPropertySetStorage::Create。
  2. 使用 IPropertySetStorage 的 NTFS 实现调用 IPropertySetStorage::Open。

何时使用

使用 IPropertyStorage 管理单个属性集中的属性。 其方法支持读取、写入和删除属性以及可与属性标识符关联的可选字符串名称。 另一种方法允许设置与属性存储关联的时间,另一种方法允许分配 CLSID,用于将其他代码(如用户界面 (UI) 代码)与属性集相关联。 调用 Enum 方法会提供指向 IEnumSTATPROPSTG 的 NTFS 实现的指针,这使你可以枚举集中的属性。

备注

NTFS 实现提供的功能实质上与复合文件实现相同。 有关详细信息,请参阅 IPropertyStorage-Compound 文件实现

由于 NTFS 是一个可靠的文件系统,因此 NTFS 属性集永远不会处于错误状态。 将 NTFS IPropertyStorage 的内容刷新到基础 NTFS 文件时,即使操作期间出现异常进程终止等故障,所有或全部状态都不会作为原子操作写入文件。 若要使用复合文件实现实现类似的行为,必须在事务处理模式下打开父 IPropertySetStorage 接口。

仅当访问在 NTFS 5.0 卷上设置的 NTFS 属性时,才能实现这种可靠性级别。 可以在早期版本的 NTFS (访问 NTFS 属性集,例如,在 Windows NT 或 Windows 2000 上运行的计算机访问在 Windows NT 4.0) 上运行的文件服务器计算机上的属性集,但不保证它们在发生意外故障时处于正确的状态。

尽管 IPropertySetStorage 的 NTFS 实现不支持事务处理, 但 IPropertyStorage 的 NTFS 实现支持事务处理。 也就是说,可以在 grfMode 参数中为 IPropertySetStorageCreateOpen 方法指定STGM_TRANSACTED。 与在复合文件实现中一样,事务处理模式仅适用于在 grfFlags 参数) 中指定PROPSETFLAG_NONSIMPLE (非简单属性存储。

IPropertyStorage

IPropertySetStorage-NTFS 文件系统实现