Débogage des fournisseurs

Les fournisseurs, à moins qu’il ne s’agisse de fournisseurs découplés s’exécutant au sein d’une application, sont chargés dans un processus Wmiprvse.exe, et non par le biais de Svchost.exe avec un processus Winmgmt.exe. Pour plus d’informations, consultez Hébergement et sécurité des fournisseurs.

Lors du déclenchement d’un point d’arrêt, le débogueur Visual Studio fige la totalité du processus hôte du fournisseur, qui est généralement l’hôte partagé Wmiprvse.exe. Tous les autres composants hébergés dans ce processus, y compris l’extension WMI Server Explorer, cessent donc de fonctionner. Les applications clientes qui appellent le fournisseur sont également bloquées. Les problèmes qui en résultent sont pires dans Windows 2000 et versions antérieures, car le fournisseur est chargé dans le processus du service WMI (Winmgmt.exe).

Si vous exécutez WMI Server Explorer dans une autre instance, l’IDE Visual Studio ne se fige pas et vous pouvez libérer le point d’arrêt. Nous vous recommandons d’exécuter votre fournisseur dans un processus d’hébergement distinct durant la phase de développement afin que le déclenchement d’un point d’arrêt ne fige que le processus hébergeant votre fournisseur. Les autres fonctions de WMI restent accessibles à WMI Server Explorer et à tous les autres scripts ou applications basés sur WMI. De plus, en cas de plantage de votre fournisseur, le fonctionnement des autres fournisseurs chargés dans le même processus hôte n’est pas affecté.

Pour charger votre fournisseur dans son propre processus hôte, modifiez l’inscription du fournisseur en définissant la propriété __Win32Provider.HostingModel sur NetworkServiceHost:[MyProvider], où MyProvider peut être n’importe quelle chaîne qui identifie de manière unique votre fournisseur. Par exemple, utilisez la valeur __Win32Provider.ClsId. Quand votre fournisseur est prêt à être expédié, redéfinissez __Win32Provider.HostingModel avec la valeur souhaitée, par exemple NetworkServiceHost.

Si vous ne déboguez pas le chargement du fournisseur, vous pouvez appeler la méthode Load de la classe MSFT_Providers pour forcer le chargement de votre fournisseur, l’attacher au processus Wmiprvse.exe sur lequel la DLL est chargée, puis déboguer si nécessaire.

Résolution des problèmes WMI

Classes de résolution des problèmes WMI