Windows Search как платформа разработки

Чтобы индексировать содержимое и свойства новых форматов файлов и хранилищ данных, поиск (Майкрософт) должен быть расширен с помощью надстроек.

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

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

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

Приступая к работе

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

Если требуется, чтобы результаты запроса отображались в Windows Обозреватель, необходимо реализовать источник данных оболочки, прежде чем создавать обработчик протокола для расширения индекса. Однако если все запросы будут программными (например, через OLE DB) и интерпретированы кодом приложения, а не оболочкой, пространство имен оболочки по-прежнему является предпочтительным, но не обязательным.

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

Обзор сценариев разработки поиска

Наиболее распространенные сценарии разработки в Windows Search:

Добавление нового хранилища данных

Хранилище данных оболочки требуется для Поиска Windows, только если вы добавляете новое хранилище данных для индексирования. Хранилище данных — это репозиторий данных, который можно предоставить модели программирования оболочки в качестве контейнера с помощью источника данных оболочки. Затем элементы в хранилище данных могут быть индексированы системой Windows Search с помощью обработчика протокола. Обработчик протокола реализует протокол для доступа к источнику содержимого в собственном формате. Интерфейсы ISearchProtocol и ISearchProtocol2 используются для реализации пользовательского обработчика протокола для расширения источников данных, которые можно индексировать. Сведения о создании источника данных оболочки см. в разделе Реализация базовых интерфейсов объектов папки.

Добавление нового формата файла

При добавлении нового настраиваемого формата файла необходимо разработать обработчик фильтра или обработчик свойств, но не оба. Фильтр — это реализация интерфейса IFilter . Он открывает файлы определенного типа и фильтрует свойства и фрагменты текста для индексатора. Фильтры связаны с типами файлов, обозначаемыми расширениями имен файлов, типами MIME или идентификаторами классов (CLSID). Хотя один фильтр может обрабатывать несколько типов файлов, каждый тип файла работает только с одним фильтром.

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

  • Отображение неиндексированных свойств элемента в пользовательском интерфейсе.
  • Поддержка записи свойств.

Использование результатов Поиска Windows

В следующих разделах описывается несколько способов использования результатов Поиска Windows.

Запросы к данным

Разработчики, пишущие приложения на основе объединенной системы свойств Windows Search и Windows, могут получать доступ к файлам и элементам независимо от типа приложения или файла. Существует два способа доступа приложений к данным индексатора.

  • Приложения напрямую взаимодействуют с OLE DB, отправляя запросы windows Search язык SQL (SQL) поставщику OLE DB в Windows Search для получения результатов. Запросы можно создавать вручную или с помощью интерфейса ISearchQueryHelper для создания SQL на основе ключевых слов поиска и расширенного синтаксиса запросов (AQS).
  • Приложения работают через слой оболочки. Преимущество слоя оболочки заключается в том, что он также поддерживает другие источники, такие как grep. Однако недостаток заключается в том, что доступны не все функции индексатора.

Другой вариант — использование протоколов ms:// поиска и search://, которые выполняют поисковые запросы на основе URL-адресов, отображаемые через Windows Обозреватель. Этот параметр включает разработку с самым легким весом, но не возвращает результаты или выбранные пользователем элементы из представления результатов вызывающей программе. Кроме того, как и другие протоколы, сторонние приложения поиска могут взять на себя протоколы ms:// поиска и search://, если приложения соответствуют требуемому набору функций. Дополнительные сведения о запросах см. в разделах Процесс запросов в Windows Search и Запрос индекса программным способом.

В Windows 7 и более поздних версиях федеративный поиск предлагает новую службу поиска, которая запрашивает удаленные хранилища данных через веб-серверы по протоколу OpenSearch и перечисляет результаты в виде RSS- или XML-каналов Atom. Соединители поиска — это соединения пространств имен, имитирующие поведение папок с помощью службы поиска. Дополнительные сведения о федерации поиска в удаленных хранилищах данных в Windows 7 см. в статье Федеративный поиск в Windows.

Индексирование файлов и элементов

Индексирование содержимого основано на файлах и типах данных, поддерживаемых надстройками, включенными в Windows Search, и правилами включения и исключения по умолчанию для папок в файловой системе. Например, фильтры, включенные в поиск окон, поддерживают более 200 распространенных типов данных, включая документы Microsoft Office, электронную почту Microsoft Outlook (в сочетании с обработчиком протокола MAPI), обычные текстовые файлы, HTML и многое другое. Полный список типов файлов, поддерживаемых в собственном коде, см. в разделе Что включено в индекс.

Индекс можно расширить с помощью обработчиков свойств и фильтров, чтобы предоставить содержимое и свойства новых форматов файлов индексу и Windows Обозреватель. Фильтры являются реализацией интерфейса IFilter . Существует два типа фильтров: один взаимодействует с отдельными элементами, такими как файлы, а второй — с контейнерами, такими как папки. Фильтры являются универсальными, так как поддерживают фрагментацию данных, текстового содержимого, некоторых свойств и нескольких языков.

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

Индексирование хранилища данных

Индекс можно расширить с помощью обработчиков протоколов для предоставления доступа к собственным хранилищам данных. Например, для файлов и элементов, содержащихся в хранилищах данных, не относящихся к файловой системе (таких как базы данных и хранилища электронной почты), требуется обработчик протокола для сопоставления с URL-адресом потока. Обработчики протоколов также могут при необходимости определить правильные фильтры для извлечения информации из потока. Фильтры перечисляют URL-адреса хранилища данных. Затем элементы индексируются по отдельности с помощью соответствующего фильтра и (или) обработчика свойств. Дополнительные сведения см. в разделе Расширение индекса.

Управление процессом индексирования

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

Интеграция системы свойств Windows с приложениями Windows Search

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

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

Общие сведения о обработчиках

Обработчик — это объект модели com, который предоставляет функциональные возможности для элемента оболочки. Большинство источников данных оболочки предлагают расширяемую систему для привязки обработчиков к элементам. Например, папка файловой системы использует систему сопоставления для поиска обработчиков для определенного типа файлов. Для каждого типа файлов требуется определенный обработчик. Для типа файлов Adobe Acrobat .pdf требуется один обработчик фильтра, например другой обработчик фильтра требуется для .doc формата файла и т. д.

Разные обработчики имеют некоторую общность. В Windows Vista и более поздних версиях все обработчики должны использовать один из следующих интерфейсов для инициализации обработчика: IInitializeWithStream, IInitializeWithItem или IItinitializeWithFile.

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

Задача Обработчик Концептуальные сведения
Доступ к свойствам файла для индексирования Обработчик свойств Разработка обработчиков свойств
Системные свойства для пользовательских форматов файлов
Добавление форматов буфера обмена для объекта данных (IDataObject) элемента (объекты данных используются в сценариях перетаскивания и копирования и вставки). Обработчик объекта данных Создание обработчиков данных
Добавление глаголов для элемента, который обычно отображается в контекстном меню Обработчик контекстного меню Создание обработчиков контекстного меню
Настройка контекстного меню с помощью динамических команд
Связывание типа файла с определенным значком Обработчик значков Создание обработчиков значков
Создание листов свойств с изображениями пользовательского интерфейса и элементами управления, которые позволяют пользовательское взаимодействие с типом файла Обработчик страницы свойств Обработчики страниц свойств
Включение типов элементов для поддержки сценариев перетаскивания и копирования и вставки Обработчик удаления Передача объектов оболочки с помощью перетаскивания и буфера обмена
Извлечение фрагментов текста и свойств документа для индексирования Обработчик фильтра Разработка обработчиков фильтров
Индексирование нового типа файла Обработчик фильтра, обработчик свойств Разработка обработчиков фильтров
Разработка обработчиков свойств
Индексирование содержимого хранилища данных Обработчик протокола Разработка обработчиков протоколов
Предварительный просмотр упрощенного представления элемента оболочки в области предварительного просмотра windows Обозреватель Обработчик предварительного просмотра Обработчики предварительного просмотра
Предоставление всплывающего текста при наведении указателя мыши на объект пользовательского интерфейса Обработчик подсказок Создание обработчиков расширений оболочки (настройка подсказки)
Предоставление статического изображения для представления элемента оболочки Обработчик эскизов Обработчики эскизов

 

В следующей таблице перечислены обработчики и интерфейсы для реализации каждого типа обработчика.

Обработчик Интерфейсы
Обработчик удаления IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Обработчик объекта данных IDataObject, IPersistFile
Обработчик фильтра Ifilter
Обработчик значков IExtractIcon
Необязательно: IPersist, IPersistFile
Обработчик подсказок IQueryInfo
Обработчик предварительного просмотра IPreviewHandler
Обработчик свойств IPropertyStore
Обработчик протокола IFilter, ISearchProtocol, IUrlAccessor
Необязательно: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Обработчик страницы свойств IShellExtInit, IShellPropSheetExt
Обработчик контекстного меню IContextMenu, IExplorerCommand, IShellExtInit
Обработчик эскизов IThumbnailProvider

 

Примечание

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

 

Дополнительные сведения о создании обработчиков см. в разделе Создание обработчиков расширений оболочки. Дополнительные сведения о свойствах см. в разделе Система свойств Windows.

Руководство по установщику надстроек

При создании установщика надстройки используйте следующие рекомендации.

  • Установщик должен использовать установщик EXE или MSI.
  • Необходимо предоставить заметки о выпуске.
  • Для каждой установленной надстройки необходимо создать запись "Установка и удаление программ ".
  • Установщик должен перенять все параметры реестра для конкретного типа файла или хранилища, понятного текущей надстройке.
  • Если предыдущая надстройка перезаписывается, установщик должен уведомить пользователя.
  • Если более новая надстройка перезаписала предыдущую надстройку, пользователь должен иметь возможность восстановить функциональность предыдущей надстройки и снова сделать ее надстройкой по умолчанию для этого типа файла или хранилища.

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

Перед созданием фильтра или обработчика свойств разработчики должны учесть следующее:

  • Эти обработчики представляют собой внутрипроцессные расширения, которые загружаются в процессы, которые вы не контролируете, например процесс управляющей программы фильтрации, windows Обозреватель (поиск grep) и сторонние узлы, такие как Почта Windows).
  • Необходимо написать безопасный код, достаточно надежный для обработки произвольно поврежденных форм формата файлов, созданных для атаки на систему.
  • Надстройка не должна утечки ресурсов, что приведет к проблемам в ведущих процессах.
  • Надстройка не должна аварийно завершатся, так как это также приведет к сбою ведущих процессов и замедлению процесса фильтрации.
  • Так как эти обработчики выполняются в фоновом системном процессе, они должны работать быстро с минимальным потреблением ресурсов ЦП и операций ввода-вывода для удовлетворения требований к производительности системы.

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

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

Обзор Windows Search

Языки, поддерживаемые Windows Search

Использование управляемого кода с данными оболочки и Windows Search

Руководство разработчика для Windows Search