Как читать и записывать расширенные атрибуты файла Windows с Win32 - PullRequest
2 голосов
/ 02 июня 2009

Я хотел бы вставить некоторые метаданные в файл Windows.

Я столкнулся с концепцией расширенных атрибутов файлов, которые, я считаю, используются именно для этой цели. Например, имя камеры в jpgs, имя эпизода в avis.

Кроме некоторых очень непонятных недокументированных API ядра, я не могу найти, как это сделать в c / c ++ с использованием API win32.

Кто-нибудь когда-нибудь делал это?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 02 июня 2009

Расширенные атрибуты являются свойством файловой системы, то есть NTFS. Теги, связанные с jpegs и AVI, хранятся в самом файле. Win32 API предоставит вам только советники из файловой системы, а не встроенные в файлы. Вам нужно будет заглянуть в сторонние библиотеки, чтобы получить встроенные атрибуты.

0 голосов
/ 02 июня 2009

В общем случае метаданные могут быть отформатированы любым удобным для вашего приложения способом. Спецификация RDF была создана для предоставления стандартного набора возможностей метаданных, которые охватывают большинство наиболее полезных видов информации.

Однако проблема заключается в том, чтобы всегда находить способ хранить его вместе с реальными данными таким образом, чтобы это не мешало приложениям, которые думают, что знают, как обрабатывать формат. Это может быть особенно сложно для известных форматов.

Adobe провела много исследований по этой проблеме и поддерживает технологию, которую они называют XMP , для достижения хорошего результата. XMP включает метаданные в стиле, тесно связанном с RDF, а также в соглашениях для его упаковки во многие другие форматы файлов или в дополнительные файлы для тех случаев, когда просто нет переносимого способа размещения данных внутри.

В системе Windows, где все файлы хранятся на томах NTFS, вполне возможно, что для хранения метаданных могут использоваться расширенные атрибуты и альтернативные потоки данных. Большая проблема с этим связана с переносимостью. Альтернативные потоки будут потеряны, если файл будет скопирован на носитель, который их не поддерживает, например, любой вариант FAT, а также файловые системы, используемые на компакт-дисках и DVD-дисках.

Это серьезный дефект, который затрудняет хранение действительной и полной резервной копии такого файла, чем это практично для большинства пользователей.

Существуют приложения, которые используют альтернативные потоки данных, но они делают это, зная, что добавленное ими значение может быть потеряно при копировании файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...