Débogage des gestionnaires de protocoles
Comprendre que le mode de lancement des gestionnaires de protocoles fait partie intégrante du test et du débogage de vos implémentations de gestionnaire de protocole.
Cette rubrique est organisée comme suit :
- À propos du débogage des gestionnaires de protocoles
- Configuration du débogage
- Ressources complémentaires
- Rubriques connexes
À propos du débogage des gestionnaires de protocoles
Le processus SearchIndexer (searchindexer.exe) lance une copie du processus SearchProtocolHost (SearchProtocolHost.exe) dans le contexte système et une autre copie dans le contexte utilisateur. Ensuite, les gestionnaires de protocoles sont chargés dans le processus SearchProtocolHost selon les besoins. Ils ne sont pas déchargés tant que le service de recherche n’est pas arrêté. La même instance d’un gestionnaire de protocole est réutilisée plusieurs fois pendant l’exécution du service.
Les processus SearchIndexer et SearchProtocolHost communiquent fréquemment pendant l’indexation. Si vous interrompez ou arrêtez le processus SearchProtocolHost pour déboguer, SearchIndexer lance un nouveau processus SearchProtocolHost, invalidant votre session de débogage. De plus, si vous attachez votre débogueur directement au processus SearchProtocolHost, vous pouvez casser l’héritage de handle entre searchindexer.exe et searchprotocolhost.exe, et les deux processus ne pourront pas communiquer.
Pour éviter ces problèmes, vous devez informer le service de recherche que vous déboguez et vous devez attacher le débogueur au processus SearchIndexer avec des instructions pour déboguer les processus enfants, comme décrit ci-dessous.
Configuration du débogage
Suivez ces étapes pour configurer le débogage de votre gestionnaire de protocole.
Informez le service de recherche que vous déboguez en définissant la valeur DebugFilters sur 1 dans le Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
Attachez un débogueur à l’aide de la clé de Registre Options d’exécution de fichier image :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion Image File Execution Options SearchIndexer.exe Debugger = <path to debugger> <debugger options>
Les options pour un exemple de débogueur sont décrites dans le tableau suivant.
Exemple utilisant le débogueur ntsdDebugger = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll;g"
Redémarrez searchindexer.exe sous le débogueur avec compmgmt.msc, services.msc ou une fenêtre de commandes avec des commandes similaires aux suivantes :
net stop wsearch <copy new DLLs for debugging> net start wsearch
Pour faire la distinction entre un processus SearchProtocolHost qui s’exécute dans le contexte système et un qui s’exécute dans le contexte utilisateur, vous pouvez passer en revue les chaînes d’environnement. Avec ntsd.exe, par exemple, vous pouvez utiliser la commande d’extension !peb pour afficher une vue mise en forme des informations dans le bloc d’environnement de processus (PEB).
Ressources supplémentaires
- Pour plus d’informations sur la création de gestionnaires, consultez Inscription des extensions Shell.
Rubriques connexes
Conceptuel
- Développer des gestionnaires de protocoles
- Comprendre les gestionnaires de protocole
- Notifier l’index des modifications
- Ajouter des ’icônes et des menus contextuels
- Exemple de code : extensions Shell pour les gestionnaires de protocoles
- Création d’un connecteur de recherche pour un gestionnaire de protocole
- Installation et inscription de gestionnaires de protocoles