Depuración de controladores de protocolo
Comprender cómo se inician los controladores de protocolo es fundamental para probar y depurar las implementaciones del controlador de protocolo.
Este tema se organiza de la siguiente manera:
- Acerca de la depuración de controladores de protocolo
- Configurar la depuración
- Recursos adicionales
- Temas relacionados
Acerca de la depuración de controladores de protocolo
El proceso SearchIndexer (searchindexer.exe) inicia una copia del proceso SearchProtocolHost (SearchProtocolHost.exe) en el contexto del sistema y otra copia en el contexto del usuario. A continuación, los controladores de protocolo se cargan en el proceso SearchProtocolHost según sea necesario. No se descargan hasta que se detiene el servicio de búsqueda. La misma instancia de un controlador de protocolo se reutiliza cualquier número de veces mientras se ejecuta el servicio.
Los procesos SearchIndexer y SearchProtocolHost se comunican con frecuencia durante la indexación. Si pausa o detiene el proceso searchProtocolHost para depurar, SearchIndexer iniciará un nuevo proceso searchProtocolHost, lo que invalidará la sesión de depuración. Además, si asocia el depurador directamente al proceso SearchProtocolHost, puede interrumpir la herencia de controlador entre searchindexer.exe y searchprotocolhost.exe, y los dos procesos no podrán comunicarse.
Para evitar estos problemas, debe notificar al servicio de búsqueda que está depurando y debe adjuntar el depurador al proceso SearchIndexer con instrucciones para depurar los procesos secundarios, como se describe a continuación.
Configurar la depuración
Siga estos pasos para configurar la depuración del controlador de protocolo.
Notifique al servicio de búsqueda que está depurando estableciendo el valor DebugFilters en 1 en el Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
Adjunte un depurador mediante la clave del Registro de Opciones de ejecución de archivo de imagen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion Image File Execution Options SearchIndexer.exe Debugger = <path to debugger> <debugger options>
Las opciones de un depurador de ejemplo se describen en la tabla siguiente.
Ejemplo con el depurador ntsdDepurador = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll;g"
Reinicie searchindexer.exe en el depurador mediante compmgmt.msc, services.msc o una ventana de comandos con comandos similares a los siguientes:
net stop wsearch <copy new DLLs for debugging> net start wsearch
Para distinguir entre un proceso searchProtocolHost que se ejecuta en el contexto del sistema y otro que se ejecuta en el contexto de usuario, puede revisar las cadenas de entorno. Con ntsd.exe, por ejemplo, puede usar el comando de extensión !peb para mostrar una vista con formato de la información en el bloque de entorno de proceso (PEB).
Recursos adicionales
- Para obtener información sobre cómo crear controladores, consulte Registro de extensiones de shell.
Temas relacionados
Conceptual
- Desarrollo de controladores de protocolo
- Descripción de los controladores de protocolo
- Notificación del índice de cambios
- Adición de iconos y menús contextuales
- Ejemplo de código: Extensiones de shell para controladores de protocolo
- Creación de un conector de Search para un controlador de protocolo
- Instalación y registro de los controladores de protocolo