Share via


Windows Search como plataforma de desarrollo

Para indexar el contenido y las propiedades de los nuevos formatos de archivo y almacenes de datos, Microsoft Windows Search debe ampliarse con complementos.

Antes de que un desarrollador de terceros de nuevos formatos de archivo y almacenes de datos pueda obtener esos formatos y almacenes para que aparezcan en los resultados de la consulta en el Explorador de Windows, el desarrollador debe hacer lo siguiente:

  • Implemente un origen de datos de Shell para ampliar el espacio de nombres de Shell.
  • Exponga elementos en un almacén de datos (si agregan un nuevo almacén de datos, ya que tendría que indizarse).
  • Desarrolle un controlador de protocolo para que Windows Search pueda acceder a los datos para la indexación.

Este tema se organiza de la siguiente manera:

Introducción

Antes de empezar a crear una aplicación de Windows Search, recuerde que la manera preferida de hacerlo es a través de un origen de datos de Shell. Un origen de datos de Shell extiende el espacio de nombres shell y expone los elementos de un almacén de datos. A continuación, el sistema de Windows Search puede indexar los elementos del almacén de datos mediante un controlador de protocolo. Este enfoque indirecto para acceder a Windows Search mediante la implementación de un origen de datos de Shell es preferible porque proporciona acceso a toda la funcionalidad de Shell. Hacerlo de esta manera garantiza una experiencia de usuario razonable.

Si desea que los resultados de la consulta aparezcan en el Explorador de Windows, debe implementar un origen de datos de Shell para poder crear un controlador de protocolo para ampliar el índice. Sin embargo, si todas las consultas serán mediante programación (a través de OLE DB por ejemplo) e interpretadas por el código de la aplicación en lugar del Shell, se prefiere un espacio de nombres de Shell, pero no es necesario.

Se requiere un controlador de protocolo para que Windows obtenga conocimiento del contenido del archivo, como elementos de bases de datos o tipos de archivo personalizados. Aunque Windows Search puede indexar el nombre y las propiedades del archivo, Windows no tiene conocimiento del contenido del archivo. Como resultado, estos elementos no se pueden indexar ni exponer en el Shell de Windows. Al implementar un controlador de protocolo personalizado, puede exponer estos elementos. Para obtener una lista de los controladores identificados por el escenario de desarrollador que está intentando lograr, consulte Información general de los controladores.

Información general sobre escenarios de desarrollo de búsqueda

Los escenarios de desarrollo más comunes de Windows Search son:

Agregar un nuevo almacén de datos

Solo necesita un almacén de datos de Shell para Windows Search si va a agregar un nuevo almacén de datos para que se indizará. Un almacén de datos es un repositorio de datos que se puede exponer al modelo de programación de Shell como contenedor mediante un origen de datos de Shell. A continuación, el sistema de Windows Search puede indexar los elementos de un almacén de datos mediante un controlador de protocolo. El controlador de protocolo implementa el protocolo para acceder a un origen de contenido en su formato nativo. Las interfaces ISearchProtocol e ISearchProtocol2 se usan para implementar un controlador de protocolo personalizado para expandir los orígenes de datos que se pueden indexar. Para obtener información sobre cómo crear un origen de datos de Shell, vea Implementación de las interfaces de objeto de carpeta básicas.

Agregar un nuevo formato de archivo

Si agrega un nuevo formato de archivo personalizado, debe desarrollar un controlador de filtro o un controlador de propiedades, pero no ambos. Un filtro es una implementación de la interfaz IFilter . Abre archivos de un tipo de archivo determinado y filtra las propiedades y fragmentos de texto para el indexador. Los filtros están asociados a tipos de archivo, como se indica en extensiones de nombre de archivo, tipos MIME o identificadores de clase (CLSID). Aunque un filtro puede controlar varios tipos de archivo, cada tipo de archivo funciona solo con un filtro.

Un controlador de propiedades traduce los datos almacenados en un archivo en un esquema estructurado reconocido por y a los que puede acceder el Explorador de Windows, Windows Search y otras aplicaciones. A continuación, estos sistemas pueden interactuar con el controlador de propiedades para escribir y leer propiedades en y desde un archivo. Los datos traducidos incluyen la vista de detalles, la información, el panel de detalles, las páginas de propiedades, etc. Cada controlador de propiedades está asociado a un tipo de archivo determinado, identificado por la extensión de nombre de archivo. Necesita un controlador de propiedades para hacer lo siguiente:

  • Muestra las propiedades de elementos no indexados en la interfaz de usuario.
  • Admite la escritura de propiedades.

Consumo de resultados de búsqueda de Windows

En las secciones siguientes se describen varias maneras de consumir resultados de Windows Search:

Consulta de datos

Los desarrolladores que escriben aplicaciones sobre el sistema combinado de propiedades de Windows Search y Windows pueden tener acceso a archivos y elementos independientemente del tipo de aplicación o archivo. Hay dos maneras de que las aplicaciones accedan a los datos del indexador:

  • Las aplicaciones se comunican directamente con OLE DB mediante el envío de consultas de Windows Search Lenguaje de consulta estructurado (SQL) al proveedor OLE DB de Windows Search para recuperar los resultados. Las consultas se pueden construir manualmente o mediante la interfaz ISearchQueryHelper para generar sql a partir de palabras clave de búsqueda y sintaxis de consulta avanzada (AQS).
  • Las aplicaciones funcionan a través de la capa de Shell. La ventaja de la capa shell es que también admite otros orígenes como grep. Sin embargo, la desventaja es que no todas las características del indexador están disponibles.

Otra opción es usar los protocolos search-ms:// y search://, que ejecutan búsquedas basadas en direcciones URL representadas a través del Explorador de Windows. Esta opción permite el desarrollo más ligero, pero no devuelve resultados ni selecciones de usuario de la vista de resultados a la aplicación que realiza la llamada. Además, al igual que otros protocolos, las aplicaciones de búsqueda de terceros pueden asumir el ms:// de búsqueda y search:// protocolos si las aplicaciones cumplen con el conjunto de características necesario. Para obtener más información sobre la consulta, vea Proceso de consulta en Windows Search y Consulta del índice mediante programación.

En Windows 7 y versiones posteriores, la búsqueda federada ofrece un nuevo proveedor de búsqueda que consulta almacenes de datos remotos a través de servidores web, a través del protocolo OpenSearch y enumera los resultados como fuentes RSS o Atom XML. Los conectores de búsqueda son uniones de espacio de nombres que simulan el comportamiento de las carpetas mediante un proveedor de búsqueda. Para obtener más información sobre la federación de búsqueda en almacenes de datos remotos en Windows 7, consulta Búsqueda federada en Windows.

Indexación de archivos y elementos

El contenido que se indexa se basa en los tipos de datos y archivos admitidos a través de complementos incluidos con Windows Search y las reglas de inclusión y exclusión predeterminadas para las carpetas del sistema de archivos. Por ejemplo, los filtros incluidos en La búsqueda de ventanas admiten más de 200 tipos comunes de datos, incluidos documentos de Microsoft Office, correo electrónico de Microsoft Outlook (junto con el controlador de protocolo MAPI), archivos de texto sin formato, HTML y muchos más. Para obtener una lista completa de los tipos de archivo admitidos de forma nativa, consulte ¿Qué se incluye en el índice?

El índice se puede extender con controladores de propiedades y filtros para exponer el contenido y las propiedades de los nuevos formatos de archivo al índice y al Explorador de Windows. Los filtros son una implementación de la interfaz IFilter . Hay dos tipos de filtros: uno que interactúa con elementos individuales, como archivos y otro que interactúa con contenedores como carpetas. Los filtros son multiuso en que admiten fragmentación de datos, contenido de texto, algunas propiedades y varios idiomas.

En cambio, los controladores de propiedades tienen un propósito más específico: exponer las propiedades de tipos de archivo específicos identificados por extensiones de nombre de archivo. Un controlador de propiedades para un tipo de archivo puede habilitar las propiedades get y set, y puede enumerar las propiedades asociadas a ese tipo de archivo. A diferencia de los filtros, los controladores de propiedades no admiten el contenido de texto ni los datos de la mandilla, y los controladores de propiedades no tienen ninguna manera de indicar en qué idioma se encuentra una propiedad de texto a menos que admitan la escritura de propiedades.

Indexación de un almacén de datos

El índice se puede ampliar con controladores de protocolo para proporcionar acceso a almacenes de datos propietarios. Por ejemplo, los archivos y elementos contenidos en almacenes de datos que no son del sistema de archivos (como bases de datos y almacenes de correo electrónico) requieren un controlador de protocolo para asignar desde una dirección URL a una secuencia. Los controladores de protocolo también pueden determinar opcionalmente los filtros correctos que se usarán para extraer información de una secuencia. Los filtros enumeran las direcciones URL del almacén de datos. A continuación, los elementos se indexan individualmente mediante el filtro adecuado o el controlador de propiedades. Para obtener más información, vea Extender el índice.

Administración del proceso de indexación

Los desarrolladores de aplicaciones pueden controlar el ámbito y la frecuencia de la indexación de Windows Search mediante varias interfaces de administración. Estas interfaces incluyen funcionalidad para agregar y quitar los directorios en los que el indexador examina los cambios, notificar manualmente el índice de cambios a los datos, comprobar el estado del indexador y forzar la reindización de algunos o todos los datos. Para obtener más información, consulte Administración del índice.

Integración del sistema de propiedades de Windows con aplicaciones de Windows Search

El sistema de propiedades de Windows es un sistema extensible de lectura y escritura de definiciones de datos que proporciona una manera uniforme de expresar metadatos sobre los elementos de Shell. El sistema de propiedades de Windows en Windows Vista y versiones posteriores permite almacenar y recuperar metadatos para los elementos de Shell. Un elemento de Shell es cualquier elemento de contenido único, como un archivo, una carpeta, un correo electrónico o un contacto. Una propiedad es un fragmento de metadatos individual asociado a un elemento de Shell. Los valores de propiedad se expresan como una estructura PROPVARIANT .

Se incluye una amplia lista de propiedades comunes para una serie de tipos de elementos comunes, como fotos, música, documentos, mensajes, contactos y archivos. Los desarrolladores también pueden introducir sus propias propiedades en la plataforma si ninguna propiedad existente satisface sus necesidades. Para obtener más información sobre la integración de aplicaciones con el sistema de propiedades de Windows, vea Developing Property Handlers.

Introducción a los controladores

Un controlador es un objeto modelo de objetos componentes (COM) que proporciona funcionalidad para un elemento de Shell. La mayoría de los orígenes de datos de Shell ofrecen un sistema extensible para enlazar controladores a elementos. Por ejemplo, la carpeta del sistema de archivos usa el sistema de asociaciones para buscar los controladores de un tipo de archivo determinado. Se requiere un controlador específico para cada tipo de archivo. Se requiere un controlador de filtro para el tipo de archivo adobe Acrobat .pdf, por ejemplo, se requiere otro controlador de filtros para el formato de archivo .doc, etc.

Los diferentes controladores tienen cierta commonalidad. En Windows Vista y versiones posteriores, todos los controladores deben usar una de las siguientes interfaces para inicializar el controlador: IInitializeWithStream, IInitializeWithItem o IItinitializeWithFile.

En la tabla siguiente se enumeran las tareas de desarrollador de alto nivel, el tipo de controlador necesario para cada tarea y se proporciona un vínculo a información conceptual sobre cómo realizar cada tarea.

Tarea Controlador Información conceptual
Acceso a las propiedades de un archivo para la indexación Controlador de propiedades Desarrollar controladores de propiedades
Propiedades definidas por el sistema para formatos de archivo personalizados
Agregar formatos de Portapapeles para el objeto de datos (IDataObject) de un elemento (los objetos de datos se usan en escenarios de arrastrar y colocar y copiar/pegar). Controlador de objeto de datos Crear controladores de datos
Agregar verbos para un elemento que se muestran normalmente en un menú contextual Controlador de menú contextual Crear controladores de menú contextual
Personalización de un menú contextual mediante verbos dinámicos
Asociación de un tipo de archivo con un icono específico Controlador de iconos Creación de controladores de iconos
Creación de hojas de propiedades con imágenes y controles de interfaz de usuario que permiten la interacción personalizada con un tipo de archivo Controlador de la hoja de propiedades Controladores de hoja de propiedades
Habilitación de un tipo de elemento para admitir escenarios de arrastrar y colocar y copiar y pegar Controlador de colocación Transferencia de objetos de Shell con arrastrar y colocar y el Portapapeles
Extracción de fragmentos de propiedades de texto y documento para la indexación Controlador de filtros Desarrollo de controladores de filtros
Indexación de un nuevo tipo de archivo Controlador de filtros, controlador de propiedades Desarrollo de controladores de filtros
Desarrollar controladores de propiedades
Indexación del contenido de un almacén de datos Controlador de protocolo Desarrollo de controladores de protocolo
Vista previa de una vista simplificada del elemento shell en el panel de vista previa del Explorador de Windows Controlador de vista previa Controladores de vista previa
Proporcionar texto emergente cuando un mouse mantiene el puntero sobre un objeto de interfaz de usuario Controlador de recuadro informativo Creación de controladores de extensión de Shell (personalización de información)
Proporcionar una imagen estática para representar un elemento de Shell Controlador de miniaturas Controladores de miniaturas

 

En la tabla siguiente se enumeran los controladores y las interfaces para implementar cada tipo de controlador.

Controlador Interfaces
Controlador de colocación IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Controlador de objeto de datos IDataObject, IPersistFile
Controlador de filtros Ifilter
Controlador de iconos IExtractIcon
Opcional: IPersist, IPersistFile
Controlador de recuadro informativo IQueryInfo
Controlador de vista previa IPreviewHandler
Controlador de propiedades IPropertyStore
Controlador de protocolo IFilter, ISearchProtocol, IUrlAccessor
Opcional: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Controlador de la hoja de propiedades IShellExtInit, IShellPropSheetExt
Controlador de menú contextual IContextMenu, IExplorerCommand, IShellExtInit
Controlador de miniaturas IThumbnailProvider

 

Nota

A veces, un controlador de propiedades se inclina como controlador de metadatos. Un origen de datos de Shell se conoce a veces como extensión de espacio de nombres de Shell. A veces, un controlador de tipo de archivo se conoce como controlador de extensión de Shell o una extensión de Shell.

 

Para obtener más información sobre cómo crear controladores, vea Creating Shell Extension Handlers. Para obtener más información sobre las propiedades, vea Sistema de propiedades de Windows.

Instrucciones del instalador de complementos

Use las instrucciones siguientes al crear un instalador de complemento:

  • El instalador debe usar el instalador EXE o MSI.
  • Se deben proporcionar notas de la versión.
  • Se debe crear una entrada Agregar o quitar programas para cada complemento instalado.
  • El instalador debe asumir toda la configuración del Registro para el tipo de archivo determinado o almacenar que comprende el complemento actual.
  • Si se sobrescribe un complemento anterior, el instalador debe notificar al usuario.
  • Si un complemento más reciente ha sobrescrito un complemento anterior, el usuario debería poder restaurar la funcionalidad del complemento anterior y convertirlo en el complemento predeterminado de nuevo para ese tipo de archivo o almacén.

Nota para los implementadores

Antes de crear un controlador de filtros o propiedades, los desarrolladores deben tener en cuenta lo siguiente:

  • Estos controladores son extensiones en proceso que se cargan en procesos que no se controlan, como el proceso de demonio de filtro, el Explorador de Windows (búsqueda grep) y hosts de terceros como Windows Mail.
  • Debe escribir código seguro lo suficientemente sólido como para controlar formas arbitrariamente dañadas del formato de archivo que se crearon para atacar el sistema.
  • El complemento no debe filtrar los recursos que generarán problemas para los procesos del host.
  • El complemento no debe bloquearse, ya que también bloqueará los procesos del host y ralentizará el proceso de filtrado.
  • Dado que estos controladores se ejecutan en un proceso del sistema en segundo plano, deben realizar rápidamente con un mínimo de CPU y E/S consumidas para satisfacer los requisitos de rendimiento del sistema.

Por lo tanto, los desarrolladores deben escribir estos complementos con experiencia en la creación de código de nivel de sistema.

Recursos adicionales

Información general sobre Windows Search

Idiomas admitidos por Windows Search

Uso de código administrado con datos de shell y Windows Search

Guía del desarrollador de Windows Search