Compartir a través de


Depuración de proveedores

Los proveedores, a menos que sean proveedores desacoplados que se ejecutan en una aplicación, se cargan en un proceso de Wmiprvse.exe, no a través de Svchost.exe con un proceso de Winmgmt.exe. Para más información, consulte Hospedaje y seguridad del proveedor.

Cuando se detiene en un punto de interrupción, el depurador de Visual Studio inmoviliza todo el proceso de host del proveedor, que suele ser el host compartido Wmiprvse.exe. Esto impide que funcionen los restantes componentes hospedados en ese proceso, incluida la extensión del Explorador de servidores WMI. Las aplicaciones cliente que llaman al proveedor también están bloqueadas. Los problemas que aparecen son peores en Windows 2000 y en las versiones anteriores, porque el proveedor se carga en el proceso de servicio WMI (Winmgmt.exe).

Si ejecuta el Explorador de servidores WMI en otra instancia, el IDE de Visual Studio no se inmoviliza y puede liberar el punto de interrupción. Se recomienda ejecutar el proveedor en un proceso de hospedaje independiente durante la fase de desarrollo, con el fin de que la detención en un punto de interrupción solo inmovilice el proceso que hospeda el proveedor. Las restantes funciones de WMI siguen siendo accesibles tanto para el Explorador de servidores WMI como para cualquier otra aplicación o scripts basados en WMI. Además, aunque el proveedor se bloquee, no afectará al funcionamiento de otros proveedores cargados en el mismo proceso de host.

Para que el proveedor se cargue en su propio proceso de host, modifique el registro del proveedor para establecer la propiedad __Win32Provider.HostingModel en NetworkServiceHost:[MyProvider], donde MyProvider puede ser cualquier cadena que identifique de forma única al proveedor. Por ejemplo, use el valor __Win32Provider.ClsId. Cuando el proveedor esté listo para enviarse, devuelva __Win32Provider.HostingModel al valor previsto, como NetworkServiceHost.

Si no va a depurar le carga del proveedor, puede llamar al método Load de la clase MSFT_Providers para forzar la carga del proveedor y, después, adjuntarlo al proceso de Wmiprvse.exe que tiene el archivo DLL cargado y realizar su depuración, en caso de que sea necesario.

Solución de problemas de WMI

Clases para la solución de problemas de WMI