Поставщики отладки
Поставщики, если они не являются несвязанными поставщиками , работающими в приложении, загружаются в Wmiprvse.exe процессе, а не через Svchost.exe с Winmgmt.exe процессом. Дополнительные сведения см. в разделе Размещение и безопасность поставщика.
При остановке в точке останова отладчик Visual Studio замораживает весь процесс узла поставщика, который обычно является общим Wmiprvse.exe узла. Это предотвращает работу любых других компонентов, размещенных в этом процессе, включая расширение WMI Server Обозреватель. Клиентские приложения, вызывающие поставщик, также блокируются. Проблемы, возникающие в Windows 2000 и более ранних версиях, еще хуже, так как поставщик загружается в процесс службы WMI (Winmgmt.exe).
Если вы запускаете WMI Server Обозреватель в другом экземпляре, интегрированная среда разработки Visual Studio не зависает и вы можете освободить точку останова. Рекомендуется запускать поставщика в отдельном процессе размещения на этапе разработки, чтобы остановка в точке останова только замораживает процесс размещения поставщика. Другие функции в WMI по-прежнему доступны для Обозреватель WMI Server и любых других приложений или сценариев на основе WMI. Кроме того, если поставщик завершает работу, это не влияет на работу других поставщиков, загруженных в тот же процесс узла.
Чтобы поставщик загружался в собственный хост-процесс, измените регистрацию поставщика, присвоив свойству NetworkServiceHost:[MyProvider]
__Win32Provider.HostingModel значение , где MyProvider может быть любой строкой, которая однозначно идентифицирует поставщика. Например, используйте значение __Win32Provider.ClsId . Когда поставщик будет готов к отправке, верните __Win32Provider.HostingModel в нужное значение, например NetworkServiceHost.
Если загрузка поставщика не выполняется, можно вызвать метод Load класса MSFT_Providers , чтобы принудить поставщик к загрузке, а затем присоединиться к процессу Wmiprvse.exe, в который загружена библиотека DLL, и выполнить отладку при необходимости.
Связанные темы