Обзор системы свойств

Система свойств Windows — это расширяемая система для чтения и записи определений данных, которая обеспечивает единый способ выражения метаданных об элементах оболочки. Система свойств Windows в Windows Vista и более поздних версиях позволяет хранить и извлекать метаданные для элементов оболочки. Элемент оболочки — это любой отдельный фрагмент содержимого, например файл, папка, электронная почта или контакт. Свойство — это отдельный фрагмент метаданных, связанный с элементом оболочки. Значения свойств выражаются в виде структуры PROPVARIANT .

Этот раздел организован следующим образом:

Введение

Свойства уникально идентифицируются по каноническому имени (например, System.Document.LastAuthor) и ключу свойства (например PKEY_Document_LastAuthor, ). Ключ свойства (PKEY) — это часть имени пары "имя-значение", которая состоит из PKEY/PROPVARIANT или string/PROPVARIANT, где строка является каноническим именем ключа PKEY (например System.Document.LastAuthor, ). PKEY — это определение, которое сообщает системе свойств все, что ей нужно знать о свойстве, тогда как значение является фактическим экземпляром свойства. Ключ PKEY внутри содержит formatID и propID.

Отдельное свойство состоит из следующих трех элементов:

  • Каноническое имя, например System.Music.Artist.
  • Описание схемы, которое указывается в формате XML PROPDESC и выражается программными средствами через IPropertyDescription.
  • Значение, например имя певца.

Описание схемы состоит из сведений о свойстве, таких как имя свойства, тип данных, ограничения, сведения о взаимодействии свойства с представлениями и системой поиска и т. д. Имя и описание схемы определяются глобально и одинаковы для всех элементов и типов. Значение зависит от отдельного элемента. То есть System.Music.Artist свойство всегда определяется как строка с несколькими значениями, но может иметь другое значение (или вообще не иметь значения) для каждого элемента.

Обработчик свойств преобразует данные, хранящиеся в файле, в структурированную схему, распознаваемую и доступную Обозреватель Windows, Windows Search и другим приложениям. Затем эти системы могут взаимодействовать с обработчиком свойств для записи и чтения свойств в файл и из файла. Переведенные данные предоставляются программно и отображаются пользователю через Windows Обозреватель в различных контекстах, включая представление сведений, подсказки, область сведений, страницы свойств и т. д. Каждый обработчик свойств связан с определенным типом файла, который определяется расширением имени файла. Разработчики должны реализовать обработчик свойств, который создает и использует собственный формат их файлов, например .jpg или .png, или использовать хранилище свойств In-Memory, которое создает и использует двоичный формат MS-PROPSTORE.

Система свойств Windows создает абстрактную модель данных, которая обеспечивает уровень абстракции от отдельных форматов файлов. Абстрактная модель данных, предоставляемая системой свойств Windows, — это метод для чтения и записи расширяемого набора именованных значений, связанных с элементом оболочки. Выражение значения является гибким, поддерживает множество типов данных и расширяемо, позволяя произвольным данным (VT_BLOB) и объектам быть выражены в виде значения.

Благодаря абстракции можно запрашивать атрибуты или метаданные любого элемента. Примеры элементов, которые можно абстрагировать, включают документы Microsoft Office, теги ID3, AutoCAD и другое программное обеспечение сторонних производителей. Аналогичным образом, если у вас есть JPEG-файл, можно использовать кодеки .jpeg и EXIF для чтения байтов файла, чтобы определить размеры изображения. Если у вас есть файл .png, вам потребуется другой кодек и другой код. Использование системы свойств Windows позволяет избежать такого рода проблем. Если вы реализуете файл нового типа, вы можете подключиться к единой абстракции, предлагаемой системой свойств Windows, и указать, как сделать метаданные потребляемыми. По этим причинам всегда предпочтительнее использовать общую платформу, предоставляемую системой свойств Windows.

Сценарии разработки

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

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

 

Потребители используют существующие свойства, схемы и обработчики свойств. Доступные для использования свойства включают свойства чтения и записи из обработчиков свойств для поддерживаемых типов файлов, а также некоторые настраиваемые свойства. Доступные схемы включают по крайней мере системную схему, а иногда и другие. Потребитель может создать приложение для использования метаданных и создать представление на основе исполнителя, независимо от того, в каких папках хранятся элементы. Иерархия папок файлов не имеет значения. Например, можно указать все элементы композиции определенного певца, не беспокоясь о расположении таких элементов. Этот сложный комплексный сценарий не ограничивается системой свойств Windows, но включает несколько различных компонентов, таких как папки индексирования и поиска.

Изобретатели свойств или сторонние разработчики являются производителями в системе свойств Windows. При подготовке к определению нового свойства сначала проверьте набор свойств, определяемых Windows. Если вы нашли тот, который соответствует вашим потребностям, типу и семантике, которые соответствуют требуемому использованию, используйте это свойство и не придумывайте новое. Если вы определяете новое настраиваемое свойство, попробуйте получить соглашение с другими разработчиками, которые могут захотеть его использовать, и опубликовать результат этого соглашения, чтобы они могли присоединиться к сообществу пользователей этого свойства.

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

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

Свойства служат как производителям, так и потребителям при интерфейсе с Windows Search и индексированием. В Windows Search есть кэш значений свойств, которые используются в реализации службы Windows Search (WSS). Эти значения свойств можно запрашивать программным способом с помощью поставщика OLE DB для Поиска Windows или ISearchFolderItemFactory, который представляет элементы в результатах поиска и представлениях на основе запросов. Затем Windows Search собирает и сохраняет свойства, создаваемые обработчиками фильтров или обработчиками свойств, при индексировании элемента, например документа Word. Это хранилище удаляется и перестраивается при перестроении индекса.

Примечание

Помните, что при повторной регистрации схемы изменения, внесенные в атрибуты ранее определенных свойств, могут не учитываться индексатором. Решение состоит в том, чтобы перестроить индекс или ввести новые свойства, которые отражают изменения, а не обновлять старые (не рекомендуется). Дополнительные сведения см. в разделе Примечание для разработчиков далее в этом разделе.

 

Например, разработчик, создающий мультимедийное приложение, хочет показать пользователям приложения всю доступную музыку определенного исполнителя. Приложение предоставит пользователю список доступных исполнителей, а затем создаст список всех доступных музыки, которую выбирает пользователь. Или пользователь может захотеть выполнить запрос на ?artist:Beethoven?, чтобы получить полный список доступных свойств в ходе поиска. В этом примере используется пространство имен оболочки, обработчики свойств и (или) запрос индекса с помощью одного из следующих способов:

  • Источник данных оболочки.
  • Поставщик OLE DB.
  • Сохраненный файл поиска (SEARCH-ms), который используется для запуска запроса путем перехода к файлу поиска в Windows Обозреватель или привязки к IShellFolder программным способом.

Примечание

System.Kind Хотя свойство не участвует в этом сценарии мультимедийного приложения, его можно использовать для создания запроса, который вернет все файлы SEARCH-MS в определенном область.

 

Предпочтительный способ доступа к API поиска и созданию приложений Windows Search — использовать источник данных оболочки. ISearchFolderItemFactory — это компонент, который может создавать экземпляры источника данных папки поиска, который является своего рода "виртуальным" источником данных, предоставляемым оболочкой, который может выполнять запросы к другим источникам данных в пространстве имен оболочки и перечислять результаты. Это можно сделать с помощью индексатора или путем перечисления и проверки элементов в указанных областях вручную.

Сторонние разработчики могут создавать приложения, которые используют данные в индексе с помощью программных запросов, и могут расширить данные в индексе для пользовательских типов файлов и элементов, которые будут индексироваться с помощью Windows Search. Если вы хотите отобразить результаты запроса в Windows Обозреватель, необходимо реализовать источник данных оболочки, прежде чем создавать обработчик протокола для расширения индекса. Однако если все запросы будут программными (например, через OLE DB) и интерпретироваться кодом приложения, а не оболочкой, пространство имен оболочки по-прежнему является предпочтительным, но не обязательным. Для получения сведений о содержимом файлов, таких как элементы в базах данных или пользовательские типы файлов, требуется обработчик протокола. Хотя Windows Search может индексировать имя и свойства файла, у Windows нет сведений о содержимом файла. В результате такие элементы не могут быть проиндексированы или представлены в оболочке Windows. Реализуя пользовательский обработчик протокола, вы можете предоставлять эти элементы. Список обработчиков, определенных сценарием разработчика, который вы пытаетесь достичь, см. в разделе Обзор обработчиков в Windows Search как платформа разработки.

Примечание

Источник данных оболочки иногда называют расширением пространства имен оболочки. Обработчик иногда называется расширением оболочки или обработчиком расширений оболочки.

 

Примечание для разработчиков

Из-за потенциальных трудностей, с которыми индексатор может столкнуться при использовании схемы системы свойств, очень важно тщательно и стратегически определять атрибуты для первого выпуска схемы. Любые изменения атрибутов (тип, ширина столбца, индексируемые) не будут отражены в базе данных после регистрации схемы. Единственным способом распознать эти изменения после того, как схема была зарегистрирована один раз в системе, будет либо перестроить индекс, а затем зарегистрировать новую схему, либо зарегистрировать схему и создать новое свойство для каждого последующего выпуска; например PKEY_GroupName_PropertyNameV2, PKEY_GroupName_PropertyNameV3и т. д. Мы не рекомендуем создавать новые свойства таким образом, так как несколько лишних столбцов могут повлиять на производительность системы.

Документация по системе свойств Windows

Остальная часть этой документации содержит следующие разделы:

Дополнительные ресурсы

Руководство разработчика системы свойств Windows

Справочник по системе свойств

Образцы кода системы свойств