2009-06-01 2 views
2

Я хотел бы вставить некоторые метаданные в файл Windows.Как читать и писать расширенные атрибуты файлов Windows с помощью win32

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

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

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

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

+0

Какой файл? Просто файл двоичных данных на диске? – Robert

+0

Да. Я хочу встроить хэш содержимого файла – 2009-06-01 22:23:08

ответ

4

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

-1

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

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

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

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

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

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

Смежные вопросы