Debuggen von Anbietern

Anbieter werden, sofern es sich nicht um entkoppelte Anbieter handelt, die in einer Anwendung ausgeführt werden, in einen Wmiprvse.exe Prozess geladen und nicht über Svchost.exe mit einem Winmgmt.exe Prozess. Weitere Informationen finden Sie unter Anbieterhosting und -sicherheit.

Beim Beenden an einem Haltepunkt friert der Visual Studio-Debugger den gesamten Hostprozess des Anbieters ein, wobei es sich in der Regel um den freigegebenen Host Wmiprvse.exe. Dies verhindert den Betrieb anderer in diesem Prozess gehosteter Komponenten, einschließlich der WMI-Server-Explorer-Erweiterung. Clientanwendungen, die den Anbieter aufrufen, werden ebenfalls blockiert. Die Probleme, die dazu führen, sind in Windows 2000 und früher schlimmer, da der Anbieter in den WMI-Dienstprozess (Winmgmt.exe) geladen wird.

Wenn Sie WMI Server Explorer in einer anderen Instanz ausführen, friert die Visual Studio-IDE nicht ein, und Sie können den Haltepunkt freigeben. Es wird empfohlen, ihren Anbieter während der Entwicklungsphase in einem separaten Hostingprozess auszuführen, damit das Beenden an einem Haltepunkt nur den Prozess, der Ihren Anbieter hostet, einfriert. Auf die anderen Funktionen in WMI kann weiterhin für WMI Server Explorer und alle anderen WMI-basierten Anwendungen oder Skripts zugegriffen werden. Wenn Ihr Anbieter abstürzt, wirkt sich dies nicht auf den Betrieb anderer Anbieter aus, die in denselben Hostprozess geladen werden.

Damit Ihr Anbieter in einem eigenen Hostprozess geladen wird, ändern Sie die Anbieterregistrierung, um die Eigenschaft __Win32Provider.HostingModel auf NetworkServiceHost:[MyProvider] festzulegen, wobei MyProvider eine beliebige Zeichenfolge sein kann, die Ihren Anbieter eindeutig identifiziert. Verwenden Sie beispielsweise den Wert aus __Win32Provider.ClsId. Wenn Ihr Anbieter versandbereit ist, kehren Sie __Win32Provider.HostingModel auf den gewünschten Wert zurück, z. B. NetworkServiceHost.

Wenn Sie das Laden des Anbieters nicht debuggen, können Sie die Load-Methode der MSFT_Providers-Klasse aufrufen, um das Laden Ihres Anbieters zu erzwingen, dann an den Wmiprvse.exe Prozess anzufügen, der die DLL geladen hat, und bei Bedarf debuggen.

WMI-Problembehandlung

WMI-Problembehandlungsklassen