Обзор системы свойств
Система свойств Windows — это расширяемая система определений данных для чтения и записи, которая обеспечивает универсальный способ выражения метаданных о элементах оболочки. Система свойств Windows в Windows Vista и более поздних версиях позволяет хранить и извлекать метаданные для элементов оболочки. Элемент оболочки — это любой элемент содержимого, например файл, папка, электронная почта или контакт. Свойство — это отдельный элемент метаданных, связанных с элементом оболочки. Значения свойств представлены в виде структуры PROPVARIANT.
Этот раздел организован следующим образом:
- введение
- сценарии разработки
- Свойства и Поиск Windows
- Примечание для разработчиков
- документация системы свойств Windows
- дополнительные ресурсы
- Связанные темы
Знакомство
Свойства однозначно определяются их каноническим именем (например, System.Document.LastAuthor
) и ключом свойства (например, PKEY_Document_LastAuthor
). Ключ свойства (PKEY) — это имя в паре "имя-значение", состоящее из PKEY/PROPVARIANT или строки/PROPVARIANT, где строка является каноническим именем PKEY (например, System.Document.LastAuthor
). PKEY — это определение, указывающее системе свойств все, что необходимо знать о свойстве, в то время как значение является фактическим экземпляром свойства. PKEY внутри содержит форматID и propID.
Отдельное свойство состоит из следующих трех частей:
- Каноническое имя, например
System.Music.Artist
. - Описание схемы, указанное в формате XML-файла propdesc и выраженное программным способом с помощью IPropertyDescription.
- Значение, например имя певца.
Описание схемы состоит из сведений о свойстве, таких как имя свойства, тип данных, ограничения, сведения о взаимодействии свойства с представлениями и системой поиска и т. д. Имя и описание схемы определяются глобально и одинаковы для всех элементов и типов. Значение зависит от отдельного элемента. То есть свойство System.Music.Artist
всегда определяется как многозначная строка, но может иметь другое значение (или нет вообще) для каждого элемента.
Обработчик свойств преобразует данные, хранящиеся в файле, в структурированную схему, которая распознается и может быть доступна в Проводнике Windows, Поиске Windows и других приложениях. Эти системы затем могут взаимодействовать с обработчиком свойств для записи свойств в файл и чтения из него. Преобразованные данные предоставляются программным способом и отображаются пользователю через проводник 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.
С точки зрения приложения, использующего модель данных Shell, существует огромное разнообразие сценариев, которые включают использование системы свойств Windows. Приложения управления мультимедиа являются заметным примером. Основные сценарии системы свойств включают такие сценарии, как чтение свойства ключевого слова фотографии или установка свойства datetaken. Примеры комплексных сценариев интеграции, которые включает система свойств Windows, но которые требуют выполнения нескольких других компонентов, включают отображение всех рисунков или поиск документа, содержащего ключевое слово.
Свойства и поиск Windows
Свойства служат как производителям, так и потребителям при интерфейсе с поиском Windows и индексированием. Поиск Windows содержит кэш значений свойств, используемых в реализации службы поиска Windows (WSS). Эти значения свойств можно программно запрашивать с помощью поставщика OLE DB поиска Windows или через ISearchFolderItemFactory, представляющую элементы в результатах поиска и представлениях на основе запросов. Затем поиск Windows собирает и сохраняет свойства, создаваемые обработчиками фильтров или обработчиками свойств, когда элемент, например документ Word, индексируется. Это хранилище удаляется и перестраивается, когда индекс перестраивается.
Заметка
Помните, что при повторной регистрации схемы изменения, внесенные в атрибуты ранее определенных свойств, могут не учитываться индексатором. Решение — перестроить индекс или ввести новые свойства, которые отражают изменения вместо обновления старых (не рекомендуется). Для получения дополнительной информации см. Заметка о реализации далее в этом разделе.
Например, разработчик, создающий медиа-приложение, хочет показать пользователям приложения всю доступную музыку определенного художника. Приложение предоставит пользователю список доступных исполнителей, а затем создаст список всех доступных музыки художником, который выбирает пользователь. Или конечный пользователь может запросить ?artist:Beethoven?, и получить полный список доступных свойств в ходе поиска. В этом примере используется пространство имен оболочки, обработчики свойств и (или) запрос индекса с помощью одного из следующих действий.
- Источник данных командной оболочки.
- Поставщик OLE DB.
- Сохраненный файл поиска (.search-ms), используемый для запуска запроса путем перехода к файлу поиска в проводнике Windows или привязке к IShellFolder программным способом.
Заметка
Хотя свойство System.Kind
не участвует в этом сценарии приложения мультимедиа, его можно использовать для создания запроса, который вернет все файлы search-ms в определенной области.
Предпочтительным способом доступа к API поиска и созданию приложений поиска Windows является источник данных оболочки. ISearchFolderItemFactory — это компонент, который может создавать экземпляры источника данных папки поиска, который является своего рода "виртуальным" источником данных, предоставляемым оболочкой, которая может выполнять запросы по другим источникам данных в пространстве имен оболочки и перечислять результаты. Это можно сделать либо с помощью индексатора, либо путем ручного перечисления и проверки элементов в указанных областях.
Сторонние разработчики могут создавать приложения, которые используют данные в индексе с помощью программных запросов, и могут расширить данные в индексе для пользовательских типов файлов и элементов, которые будут индексироваться в Службе поиска Windows. Если вы хотите отобразить результаты запроса в проводнике Windows, необходимо реализовать источник данных оболочки, прежде чем создать обработчик протокола для расширения индекса. Однако если все запросы будут программными (например, с помощью OLE DB) и интерпретированы кодом приложения, а не оболочкой, то пространство имен оболочки по-прежнему предпочтительнее, но не обязательно. Обработчик протокола требуется для Windows для получения сведений о содержимом файла, таких как элементы в базах данных или пользовательских типах файлов. Хотя поиск Windows может индексировать имя и свойства файла, Windows не имеет сведений о содержимом файла. В результате такие элементы нельзя индексировать или отображать в оболочке Windows. Реализуя пользовательский обработчик протокола, вы можете делать эти элементы доступными. Список обработчиков, определенных сценарием разработчика, который вы пытаетесь достичь, см. в разделе "Обзор обработчиков" в Поиск Windows в качестве платформы разработки.
Заметка
Источник данных оболочки иногда называется расширением пространства имен оболочки. Иногда обработчик называется расширением оболочки или обработчиком расширений оболочки.
Примечание для разработчиков
Из-за потенциальных трудностей, которые индексатор может испытывать при использовании схемы системы свойств, важно тщательно и стратегически определить атрибуты для первого выпуска этой схемы. Любые изменения атрибутов (тип, ширина столбца, индексируемость) не будут отражаться в базе данных после регистрации схемы. Единственным способом распознать эти изменения после регистрации схемы один раз в системе будет либо перестроить индекс, а затем зарегистрировать новую схему, либо зарегистрировать схему, а затем создать новое свойство для каждого последующего выпуска; например, PKEY_GroupName_PropertyNameV2
, PKEY_GroupName_PropertyNameV3
и т. д. Мы не рекомендуем создавать новые свойства таким образом, так как несколько лишних столбцов могут повлиять на производительность системы.
Документация по системе свойств Windows
Оставшаяся часть этой документации содержит следующие разделы:
Руководство разработчика системы свойств Windows
Подробно описывается, как реализовать основные сценарии разработки с помощью системы свойств Windows.
-
Документирует свойства Windows, схемы описания свойств, интерфейсы, функции, структурыи константы, перечисления и флаги системы свойств Windows.
-
Описывает примеры, демонстрирующие использование системы свойств Windows.
Дополнительные ресурсы
- Сведения о повторном использовании хранилища свойств In-Memory см. в разделе Инициализация обработчиков свойств и PSCreateMemoryPropertyStore.
- Для получения спецификации двоичного формата файла в Microsoft Property Store см. [MS_PROPSTORE].
- Связь между поиском Windows и индексированием и расширением индекса объясняется в следующих разделах в разделе "Поиск Windows":
- разработка обработчиков фильтров для поиска Windows
- Разработка обработчиков протоколов для Windows Search
- разработка обработчиков свойств для поиска Windows
- Сведения о загрузке пакета SDK для Windows 7 или обновленной версии SDK для Windows Vista см. в пакета SDK для Windows.
Связанные разделы