Procedimientos recomendados para crear controladores de filtro en Windows Search

Búsqueda de Microsoft Windows usa filtros para extraer el contenido de los elementos para su inclusión en un índice de texto completo. Puede ampliar Windows Search para indexar tipos de archivo nuevos o propietarios escribiendo controladores de filtro para extraer el contenido y controladores de propiedades para extraer las propiedades de los archivos. 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 tipo solo funciona con un filtro.

Este tema contiene las siguientes secciones:

Código nativo

En Windows 7 y versiones posteriores, los filtros escritos en código administrado se bloquean explícitamente. Los filtros deben escribirse en código nativo debido a posibles problemas de control de versiones de CLR con el proceso en el que se ejecutan varios complementos.

A continuación se muestran procedimientos para escribir aplicaciones seguras para su uso con Windows Search.

Para aplicaciones de consulta:

  • Al escribir clientes de búsqueda, debe elegir la API que se ejecuta en un contexto de seguridad que permita al usuario el privilegio mínimo. Por ejemplo, las páginas ASP pueden usar el objeto de consulta IXSSO, que se ejecuta como un proceso de usuario.

Para IFilters y recursos de idioma:

  • Si se instala un nuevo controlador de filtros para un tipo de archivo como reemplazo de un registro de filtro existente, el instalador debe guardar el registro actual y restaurarlo si se desinstala el nuevo controlador de filtros. No hay ningún mecanismo para encadenar filtros. Por lo tanto, el nuevo controlador de filtros es responsable de replicar cualquier funcionalidad necesaria del filtro anterior.
  • IFilters, separadores de palabras y lematizadores para La búsqueda de Windows se ejecutan en el contexto de seguridad local. Deben escribirse para administrar búferes y para apilar correctamente. Todas las copias de cadena deben tener comprobaciones explícitas para protegerse frente a saturaciones de búfer. Siempre debe comprobar el tamaño asignado del búfer y probar el tamaño de los datos con respecto al tamaño del búfer. Las saturaciones de búfer son una técnica común para aprovechar el código que no aplica restricciones de tamaño del búfer.
  • IFilter, componentes de separador de palabras y lematizadores nunca deben llamar a la función ExitProcess Function o a una API similar que finalice un proceso y todos sus subprocesos.
  • No asigne ni libere recursos en el punto de entrada DllMain. Esto puede provocar errores durante las pruebas de esfuerzo de recursos bajos.
  • Codigo todos los objetos para que sean seguros para subprocesos. Windows Search llama a cualquier instancia de un separador de palabras o lematizador en un subproceso cada vez, pero puede llamar a varias instancias al mismo tiempo en varios subprocesos.
  • Evite crear archivos temporales o escribir en el registro.
  • Si usa el compilador de Microsoft Visual C++, asegúrese de compilar la aplicación mediante la opción /GS. La opción /GS se usa para detectar saturaciones de búfer. La opción /GS coloca comprobaciones de seguridad en el código compilado. Para obtener más información, vea DllGetClassObject Function /GS (Buffer Security Check) en la sección Opciones del compilador de Visual C++ del SDK de plataforma.

Recursos adicionales

Desarrollo de controladores de filtros

Acerca de los controladores de filtro en Windows Search

Devolver propiedades de un controlador de filtros

Controladores de filtro que se envían con Windows

Implementación de controladores de filtro en Windows Search

Registro de controladores de filtro

Probar controladores de filtro