Windows Search como plataforma de desarrollo
Para indexar el contenido y las propiedades de los nuevos formatos de archivo y almacenes de datos, deben incluirse complementos en Microsoft Windows Search.
Para que un desarrollador tercero de nuevos formatos de archivo y almacenes de datos pueda hacer que esos formatos y almacenes aparezcan en los resultados de la consulta en el Explorador de Windows, el desarrollador debe hacer las tres cosas siguientes:
- Implemente un origen de datos de Shell para ampliar el espacio de nombres de Shell.
- Exponga los elementos en un almacén de datos (si se agrega un nuevo almacén de datos, ya que tendría que indexarse).
- 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
- Introducción a las tareas de desarrollo de Search
- Información general sobre controladores
- Guía sobre el instalador de complementos
- Nota para implementadores
- Recursos adicionales
- Temas relacionados
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 amplía el espacio de nombres de Shell y expone los elementos en 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. Se prefiere usar este método indirecto para acceder a Windows Search mediante la implementación de un origen de datos de Shell porque da acceso a todas las funcionalidades de Shell. De este modo, se garantiza una experiencia de usuario viable.
Si quiere 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 y ampliar el índice. Sin embargo, si todas las consultas van a ser 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 sigue prefiriendo un espacio de nombres Shell, aunque no es necesario.
Se necesita un controlador de protocolo para que Windows reciba los datos del contenido de los archivos, como los elementos de las bases de datos o los 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 controladores identificados por la tarea de desarrollador que está intentando realizar, consulte Información general sobre controladores.
Introducción a las tareas de desarrollo de Search
Las tareas de desarrollo más comunes en Windows Search son:
- Agregar un nuevo almacén de datos
- Agregar un nuevo formato de archivo
- Consumo de resultados de Windows Search
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 que indexar. Un almacén de datos es un repositorio de datos que se puede exponer al modelo de programación de Shell como un contenedor mediante un origen de datos de Shell. El sistema de Windows Search puede indexar los elementos del 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 más información sobre cómo crear un origen de datos de Shell, consulte Implementación de las interfaces básicas de objetos de carpeta.
Agregar un nuevo formato de archivo
Si agrega un nuevo formato de archivo personalizado, debe desarrollar un controlador de filtros o un controlador de propiedades, pero no ambos. Un filtro es una implementación de la interfaz IFilter. Abre archivos de un tipo determinado y filtra las propiedades y los fragmentos de texto del indexador. Los filtros están asociados a tipos de archivo, como se indica mediante extensiones de nombre de archivo, tipos MIME o identificadores de clase (CLSID). Aunque un filtro puede controlar varios tipos de archivo, cada uno solo funciona con un filtro.
Un controlador de propiedades traduce los datos almacenados en un archivo en un esquema estructurado reconocido por el Explorador de Windows, Windows Search y otras aplicaciones y al que pueden acceder estos. Estos sistemas pueden interactuar con el controlador de propiedades para escribir y leer propiedades en un archivo y desde él. Los datos traducidos incluyen la vista de detalles, la información de ayuda, 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:
- Mostrar las propiedades de elementos no indexados en la interfaz de usuario.
- Incluir propiedades de escritura.
Consumo de resultados de Windows Search
En las secciones siguientes se describen varias maneras de consumir resultados de Windows Search:
- Consultar datos
- Consulta de almacenes de datos remotos (Búsqueda federada)
- Indexación de archivos y elementos
- Indexación de un almacén de datos
- Administración del proceso de indexación
- Integración del sistema de propiedades de Windows con aplicaciones de Windows Search
Consulta de datos
Los desarrolladores que escriben aplicaciones encima del sistema combinado de propiedades de Windows y Windows Search pueden acceder 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 enviando consultas del Lenguaje de consulta estructurado (SQL) de Windows Search al proveedor OLE DB de Windows Search para recuperar los resultados. Las consultas se pueden construir manualmente o mediante la interfaz ISearchQueryHelper para generar el 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 de 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.
Hay otra opción que 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 habilita 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 hacerse cargo de los protocolos search-ms:// y search:// si las aplicaciones cumplen con las características necesarias. Para obtener más información sobre la consultas, consulte Proceso de consultas en Windows Search y Consulta del índice mediante programación.
Consulta de almacenes de datos remotos (Búsqueda federada)
En Windows 7 y versiones posteriores, la búsqueda federada ofrece un nuevo proveedor de búsqueda que consulta almacenes de datos remotos mediante servidores web, a través del protocolo OpenSearch y muestra los resultados como fuentes RSS o Atom XML. Los conectores de búsqueda son puntos de unión de espacio de nombres que simulan el sistema de carpetas mediante un proveedor de búsqueda. Para obtener más información sobre la búsqueda federada en almacenes de datos remotos en Windows 7, consulte 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 de las carpetas en el sistema de archivos. Por ejemplo, los filtros incluidos en Windows Search admiten más de 200 tipos de datos comunes, 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 ver la lista completa de los tipos de archivo admitidos de forma nativa, consulte ¿Qué se incluye en el índice?
El índice se puede ampliar con controladores de propiedades y filtros para mostrar el contenido y las propiedades de los nuevos formatos de archivo en el índice y el Explorador de Windows. Los filtros son una implementación de la interfaz IFilter. Hay dos tipos de filtros: uno que interactúa con elementos determinados, como archivos, y otro que interactúa con contenedores, como carpetas. Los filtros son multiuso, por lo que admiten fragmentación de datos, contenido de texto, algunas propiedades y varios idiomas.
Por el contrario, los controladores de propiedades tienen un uso previsto más específico: exponer las propiedades de tipos de archivo específicos identificados por extensiones de nombre de archivo. Un controlador de propiedades en un tipo de archivo puede habilitar las propiedades get y set y puede mostrar las propiedades asociadas a ese tipo de archivo. A diferencia de los filtros, los controladores de propiedades no admiten fragmentos datos o contenido de texto y los controladores de propiedades no tienen ninguna manera de indicar en qué idioma está una propiedad de texto a menos que incluyan propiedades de escritura.
Indexación de un almacén de datos
El índice se puede ampliar con controladores de protocolo para dar 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) necesitan un controlador de protocolo para asignar de una dirección URL a un flujo. Los controladores de protocolo también pueden determinar opcionalmente los filtros correctos que se usarán para extraer información de un flujo. Con los filtros se muestran las direcciones URL del almacén de datos. Los elementos se indexan uno a uno mediante el filtro adecuado o el controlador de propiedades. Para obtener más información, consulte Ampliación del í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 funcionalidades para agregar y quitar los directorios en los que el indexador examina los cambios, avisar manualmente al índice de los cambios en los datos, comprobar el estado del indexador y forzar la reindexación de algunos o todos los datos. Para obtener más información, consulte Administrar el í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 ofrece 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 concreto de metadatos 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 varios 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 no hay ninguna propiedad de su preferencia. Para obtener más información sobre la integración de aplicaciones con el sistema de propiedades de Windows, consulte Desarrollo de controladores de propiedades.
Información general sobre controladores
Un controlador es un objeto de Modelo de objetos componentes (COM) que proporciona funcionalidad para un elemento de Shell. La mayoría de 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 asociación para buscar los controladores de un tipo de archivo determinado. Se necesita un controlador específico para cada tipo de archivo. Se necesita un controlador de filtros para el tipo de archivo Adobe Acrobat .pdf, por ejemplo, es necesario otro controlador de filtros para el formato de archivo .doc, etc.
Los diferentes controladores tienen ciertos puntos en común. 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 figuran las tareas de desarrollador de alto nivel, el tipo de controlador necesario para cada tarea y se incluye un vínculo a información conceptual sobre cómo realizar cada tarea.
Tarea | Handler | Información conceptual |
---|---|---|
Acceso a las propiedades de un archivo para la indexación | Controlador de propiedades | Desarrollo de 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 acciones de arrastrar y soltar y copiar y pegar). | Controlador de objeto de datos | Creación de controladores de datos |
Agregar verbos en 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 | Crear 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 hojas de propiedades |
Habilitación de un tipo de elemento para admitir acciones de arrastrar y soltar y copiar y pegar | Controlador de acción de soltar | Transferencia de objetos de Shell con arrastrar y soltar y el portapapeles |
Extracción propiedades de fragmentos de texto y de documentos 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 Desarrollo de controladores de propiedades |
Indexación del contenido de un almacén de datos | Controlador de protocolo | Desarrollo de controladores de protocolo |
Previsualización de una vista simplificada del elemento de Shell en el panel de vista previa del Explorador de Windows | Controlador de vista previa | Controladores de vista previa |
Mostrar texto emergente cuando se deja el cursor del ratón sobre un objeto de la interfaz de usuario | Controlador de recuadro informativo | Creación de controladores de extensión de Shell (personalización de recuadro informativo) |
Mostrar una imagen estática para representar un elemento de Shell | Controlador de miniaturas | Controladores de miniaturas |
En la tabla siguiente figuran los controladores y las interfaces para implementar cada tipo de controlador.
Handler | Interfaces |
---|---|
Controlador de acción de soltar | 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, a un controlador de propiedades se le llama controlador de metadatos. A veces, un origen de datos de shell se conoce como una extensión de espacio de nombres de shell. Un controlador de tipos de archivo a veces se llama controlador de extensión de Shell o extensión de Shell.
Para obtener más información sobre la creación de controladores, consulte Creación de controladores de extensión de Shell. Para obtener más información sobre las propiedades, consulte Sistema de propiedades de Windows.
Guía sobre el instalador de complementos
Consulte las instrucciones siguientes al crear un instalador de complemento:
- El instalador debe usar el archivo de instalación 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 podrá restaurar las funcionalidades del complemento anterior y convertirlo de nuevo en el complemento predeterminado en el tipo de archivo o almacén correspondiente.
Nota para implementadores
Antes de crear un controlador de filtros o propiedades, los desarrolladores deben tener en cuenta lo siguiente:
- Estos controladores son extensiones integradas en los procesos 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 los daños aleatorios del formato de archivo que se crearon para atacar el sistema.
- El complemento no debe dejar salir los recursos que vayan a generar problemas para los procesos de host.
- El complemento no debe bloquearse, ya que esto también bloquearía los procesos de host y ralentizaría el proceso de filtrado.
- Dado que estos controladores se ejecutan en un proceso de sistema en segundo plano, deben operar rápidamente con un mínimo de CPU y E/S de consumo para cubrir los requisitos de rendimiento del sistema.
Por tanto, los desarrolladores que escriban estos complementos deben tener experiencia en la creación de códigos para sistemas.
Recursos adicionales
- Para obtener más información sobre cómo crear un origen de datos de Shell, consulte Implementación de las interfaces básicas de objetos de carpeta.
- En el caso de los orígenes de datos que necesiten usar el objeto de vista de carpetas del sistema predeterminado de Shell (DefView), consulte Implementar una vista de carpetas, la función SHCreateShellFolderView y la estructura SFV_CREATE. Los orígenes de datos que usan el objeto de vista de carpetas del sistema predeterminado de Shell (DefView) deben implementar el siguiente conjunto de interfaces: IShellFolder, IShellFolder2, IPersistFolder, IPersistFolder2 y (opcionalmente) IPersistFolder3. Si con la implementación de IShellFolder no se usa SHCreateShellFolderView crear DefView, el objeto de vista de Shell podría necesitar IFolderView.
- ISearchFolderItemFactory es la interfaz principal para los consumidores del origen de datos de Shell conocido como DBFolder. Para obtener más información acerca de DBFolder, consulte la descripción de la constante STR_PARSE_WITH_PROPERTIES en Enlazar claves de cadena de contexto. Consulte también Matrices de asociación e IPropertySystem::GetPropertyDescriptionListFromString.
- Para obtener información sobre OLE DB, consulte Información general sobre la programación de OLE DB. Para obtener información sobre el proveedor de datos .NET Framework para OLE DB, consulte la documentación del Espacio de nombres System.Data.OleDb.
- Para ver los tableros de mensajes de la comunidad sobre tecnologías de búsqueda, consulte Windows: Foros sobre Search.
- Para ver ejemplos de código relacionados, vea Ejemplos de código de Windows Search.
Temas relacionados