如何使用win32读取和写入扩展的Windows文件属性

时间:2009-06-01 21:24:06

标签: c winapi

我想在Windows文件中嵌入一些元数据。

我遇到了扩展文件属性的概念,我认为这是用于此目的。例如,jpgs中的摄像机名称,avis中的剧集名称。

除了一些非常模糊的非文档内核API,我无法使用win32 api在c / c ++中找到如何做到这一点。

有没有人这样做过?

提前致谢。

2 个答案:

答案 0 :(得分:5)

扩展属性是文件系统的属性,即NTFS。与jpeg和AVI相关联的标签存储在文件本身中。 Win32 API只会为您提供文件系统中的EA,而不是文件中嵌入的EA。您必须查看第三方库以检索嵌入的属性。

答案 1 :(得分:-1)

在一般情况下,元数据可以以任何易于您的应用程序访问的方式进行格式化。创建RDF规范是为了提供一组标准的元数据功能,涵盖了大多数通常有用的信息。

然而,问题始终是找到一种方法将其与实际数据一起存储,不会干扰认为他们知道如何处理格式的应用程序。对于众所周知的格式,这可能特别棘手。

Adob​​e已就此问题进行了大量研究,并支持他们称之为XMP的技术,以取得良好的效果。 XMP包含与RDF密切相关的样式的元数据,以及将其打包到许多其他文件格式中的约定,或者用于那些没有可移植方式来容纳数据的情况下的侧车文件。

在所有文件都存储在NTFS卷上的Windows系统上,可以想象扩展属性和备用数据流可用于存储元数据。这个问题的一大问题是可移植性。如果将文件复制到不支持它们的媒体,例如任何FAT的风格以及CD和DVD上使用的文件系统,则备用流将丢失。

这是一个严重的缺陷,使得保持这种文件的有效和完整备份比大多数用户更难实现。

有些应用程序使用备用数据流,但是他们知道在复制文件时它们添加的值可能会丢失。