Depuração de manipuladores de protocolo
Entender como os manipuladores de protocolo são iniciados é essencial para testar e depurar suas implementações de manipuladores de protocolo.
Este tópico é organizado da seguinte maneira:
- Sobre a depuração de manipuladores de protocolo
- Configurando a Depuração
- Recursos Adicionais
- Tópicos relacionados
Sobre a depuração de manipuladores de protocolo
O processo SearchIndexer (searchindexer.exe) inicia uma cópia do processo SearchProtocolHost (SearchProtocolHost.exe) no contexto do sistema e outra cópia no contexto do usuário. Em seguida, os manipuladores de protocolo são carregados no processo SearchProtocolHost conforme necessário. Eles não são descarregados até que o serviço de pesquisa seja interrompido. A mesma instância de um manipulador de protocolo é reutilizada qualquer número de vezes enquanto o serviço estiver em execução.
Os processos SearchIndexer e SearchProtocolHost se comunicam com frequência durante a indexação. Se você pausar ou interromper o processo SearchProtocolHost para depurar, o SearchIndexer iniciará um novo processo SearchProtocolHost, invalidando sua sessão de depuração. Além disso, se você anexar o depurador diretamente ao processo SearchProtocolHost, poderá interromper a herança de manipulações do searchindexer.exe para o searchprotocolhost.exe, e os dois processos não conseguirão se comunicar.
Para evitar esses problemas, é necessário notificar o serviço de pesquisa que você está depurando e anexar o depurador ao processo SearchIndexer com instruções para depurar processos filhos, conforme descrito a seguir.
Configuração da depuração
Siga estas etapas para configurar a depuração do seu manipulador de protocolo.
Notifique o serviço de pesquisa de que você está depurando, definindo o valor DebugFilters como 1 no registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
Anexe um depurador usando a chave do Registro de Opções de Execução de Arquivo de Imagem:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion Image File Execution Options SearchIndexer.exe Debugger = <path to debugger> <debugger options>
As opções para um depurador de amostra estão descritas na tabela a seguir.
Exemplo usando o depurador ntsdDepurador = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll;g"
Reinicie o searchindexer.exe no depurador usando compmgmt.msc, services.msc ou uma janela de comando com comandos semelhantes aos seguintes:
net stop wsearch <copy new DLLs for debugging> net start wsearch
Para distinguir entre um processo SearchProtocolHost em execução no contexto do sistema e um em execução no contexto do usuário, é possível analisar as cadeias de caracteres do ambiente. Com o ntsd.exe, por exemplo, você pode usar o comando de extensão !peb para exibir uma exibição formatada das informações no bloco de ambiente do processo (PEB).
Recursos adicionais
- Para obter informações sobre como criar manipuladores, confira Registro de Extensões do Shell.
Tópicos relacionados
Conceitual
- Desenvolver manipuladores de protocolo
- Noções básicas sobre manipuladores de protocolo
- Notificar o índice de alterações
- Adicionar ícones e menus de contexto
- Exemplo de código: extensões de Shell para manipuladores de protocolo
- Criar um conector de pesquisa para um manipulador de protocolo
- Instalar e registrar manipuladores de protocolo