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 实现支持它。 也就是说,STGM_TRANSACTED 可以在 grfMode 参数中指定为 CreateOpen 方法 IPropertySetStorage。 与复合文件实现一样,事务处理模式仅适用于非简单属性存储(在 grfFlags 参数中指定 PROPSETFLAG_NONSIMPLE)。

IPropertyStorage

IPropertySetStorage-NTFS 文件系统实现