Share via


Provider di debug

I provider, a meno che non siano provider separati in esecuzione all'interno di un'applicazione, vengono caricati in un processo di Wmiprvse.exe e non tramite Svchost.exe con un processo di Winmgmt.exe. Per altre informazioni, vedere Hosting e sicurezza del provider.

Quando si arresta in corrispondenza di un punto di interruzione, il debugger di Visual Studio blocca l'intero processo host del provider, in genere l'host condiviso Wmiprvse.exe. Ciò impedisce l'operazione di qualsiasi altro componente ospitato in tale processo, inclusa l'estensione Esplora server WMI. Vengono bloccate anche le applicazioni client che chiamano nel provider. I problemi che generano sono peggiori in Windows 2000 e versioni precedenti perché il provider viene caricato nel processo del servizio WMI (Winmgmt.exe).

Se si esegue Esplora server WMI in un'altra istanza, l'IDE di Visual Studio non si blocca e si è in grado di rilasciare il punto di interruzione. È consigliabile eseguire il provider in un processo di hosting separato durante la fase di sviluppo, in modo che l'arresto in un punto di interruzione blocchi solo il processo che ospita il provider. Le altre funzioni in WMI continuano ad essere accessibili a Esplora server WMI e a qualsiasi altra applicazione o script basati su WMI. Inoltre, se il provider si arresta in modo anomalo, non influisce sul funzionamento di altri provider caricati nello stesso processo host.

Per caricare il provider nel proprio processo host, modificare la registrazione del provider per impostare la proprietà __Win32Provider.HostingModel su NetworkServiceHost:[MyProvider] dove MyProvider può essere qualsiasi stringa che identifichi in modo univoco il provider. Ad esempio, usare il valore __Win32Provider.ClsId . Quando il provider è pronto per la spedizione, restituire __Win32Provider.HostingModel al valore previsto, ad esempio NetworkServiceHost.

Se non si esegue il debug del caricamento del provider, è possibile chiamare il metodo Load della classe MSFT_Providers per forzare il caricamento del provider, quindi collegarsi al processo di Wmiprvse.exe con la DLL caricata ed eseguire il debug in base alle esigenze.

Risoluzione dei problemi di WMI

Classi di risoluzione dei problemi WMI