Обработчики протокола отладки
Понимание того, как запускаются обработчики протоколов, является неотъемлемой частью тестирования и отладки реализаций обработчика протокола.
Этот раздел организован следующим образом:
- Сведения об обработчиках протокола отладки
- Настройка отладки
- Дополнительные ресурсы
- Связанные статьи
Сведения об обработчиках протокола отладки
Процесс SearchIndexer (searchindexer.exe) запускает одну копию процесса SearchProtocolHost (SearchProtocolHost.exe) в системном контексте и еще одну копию в контексте пользователя. Затем обработчики протокола загружаются в процесс SearchProtocolHost по мере необходимости. Они не выгружаются до остановки службы поиска. Тот же экземпляр обработчика протокола повторно используется любое количество раз во время выполнения службы.
Процессы SearchIndexer и SearchProtocolHost часто взаимодействуют во время индексирования. Если вы приостанавливаете или останавливаете процесс SearchProtocolHost для отладки, searchIndexer запустит новый процесс SearchProtocolHost, недействив сеанс отладки. Кроме того, при подключении отладчика непосредственно к процессу SearchProtocolHost можно прервать наследование дескрипторов от searchindexer.exe к searchprotocolhost.exe, и два процесса не смогут взаимодействовать.
Чтобы избежать этих проблем, необходимо уведомить службу поиска о том, что выполняется отладка, и необходимо подключить отладчик к процессу SearchIndexer с инструкциями по отладке дочерних процессов, как описано далее.
Настройка отладки
Выполните следующие действия, чтобы настроить отладку для обработчика протокола.
Сообщите службе поиска, что выполняется отладка, задав значение DebugFilters равным 1 в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft Windows Search Gathering Manager DebugFilters = 1
Присоединение отладчика с помощью раздела реестра параметров выполнения файла изображений:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion Image File Execution Options SearchIndexer.exe Debugger = <path to debugger> <debugger options>
Параметры для примера отладчика описаны в следующей таблице.
Пример использования отладчикаntsd = C:\debuggers\ntsd.exe -odGx -c: "sxe ld mydll.dll; g"
Перезапустите searchindexer.exe под отладчиком с помощью compmgmt.msc, services.msc или командного окна с командами, аналогичными следующим:
net stop wsearch <copy new DLLs for debugging> net start wsearch
Чтобы отличить процесс SearchProtocolHost, выполняемый в системном контексте, и один запущенный в контексте пользователя, можно просмотреть строки среды. Например, с помощью ntsd.exe можно использовать команду расширения !peb для отображения форматированного представления сведений в блоке среды процесса (PEB).
Дополнительные ресурсы
- Сведения о создании обработчиков см. в разделе "Регистрация расширений оболочки".
См. также
Концептуальной
- Разработка обработчиков протоколов
- Общие сведения о обработчиках протоколов
- Уведомление об индексе изменений
- Добавление значков и контекстных меню
- Пример кода: расширения оболочки для обработчиков протоколов
- Создание Подключение поиска для обработчика протокола
- Установка и регистрация обработчиков протокола