偵錯提供者

提供者,除非它們是在應用程式內 執行的分離提供者 ,否則會載入Wmiprvse.exe進程,而不是透過Svchost.exe與Winmgmt.exe進程載入。 如需詳細資訊,請參閱 提供者裝載和安全性

在中斷點停止時,Visual Studio 偵錯工具會凍結整個提供者主機進程,通常是共用主機Wmiprvse.exe。 這可防止在該進程中裝載的任何其他元件作業,包括 WMI 伺服器總管擴充功能。 呼叫提供者的用戶端應用程式也會遭到封鎖。 導致 Windows 2000 和更早版本中更糟的問題,因為提供者會載入 WMI 服務進程 (Winmgmt.exe) 。

如果您在另一個實例中執行 WMI 伺服器總管,Visual Studio IDE 不會凍結,而且您可以釋放中斷點。 建議您在開發階段期間在不同的裝載進程中執行提供者,因此在中斷點停止只會凍結裝載提供者的進程。 WMI 伺服器總管和任何其他 WMI 型應用程式或腳本仍可繼續存取 WMI 中的其他函式。 此外,如果您的提供者當機,它不會影響載入相同主機進程之其他提供者的作業。

若要在自己的主機進程中載入提供者,請修改提供者註冊,將 __Win32Provider.HostingModel 屬性設定為 NetworkServiceHost:[MyProvider] ,其中 MyProvider 可以是可唯一識別提供者的任何字串。 例如,使用 __Win32Provider.ClsId 值。 當您的提供者準備好寄送時, 請將 __Win32Provider.HostingModel 傳回至預定的值,例如 NetworkServiceHost

如果您不是偵錯提供者載入,您可以呼叫 MSFT_Providers 類別的 Load 方法 ,強制載入提供者,然後附加至已載入 DLL 的Wmiprvse.exe進程,並視需要偵錯。

WMI 疑難排解

WMI 疑難排解類別