Fourniture de données dans WMI

WMI rend les données sur les objets gérables Windows disponibles via les fournisseurs WMI. Un fournisseur récupère des données à partir d’un composant système, tel qu’un processus, ou d’une application instrumentée, telle que SNMP ou IIS, et transmet ces données via WMI à une application de gestion. Par exemple, lorsqu’une application ou un script demande des informations de traitement à l’aide de la classe Win32_Process WMI, les données sont obtenues dynamiquement via un fournisseur préinstallé.

Les sections suivantes sont abordées dans cette rubrique :

Création d’un modèle pour un objet gérable

Avant de développer un fournisseur, créez un modèle de données pour représenter l’objet gérable à exposer via WMI. Vous planifiez les objets de données que votre fournisseur exposera. Par exemple, si vous envisagez de gérer la résolution d’écran de l’arrière-plan du bureau, vous devez décider comment modéliser le Bureau dans un fichier MOF (Managed Object Format).

Pour créer un modèle utile :

  • Déterminez des scénarios réels et modélisez les informations qu’un client peut vouloir lire et mettre à jour (par exemple, en modifiant l’image d’arrière-plan) pour chaque objet gérable. Il s’agit de vos propriétés de classe.
  • Déterminez le type d’actions qu’un client peut souhaiter effectuer avec chaque objet gérable. Ce sont vos méthodes.

Implémentation d’un modèle pour un objet gérable

Pour implémenter un modèle pour les objets gérables, créez un fichier MOF contenant une classe WMI qui représente chaque objet. Pour plus d’informations sur la création d’un fichier MOF pour définir des classes WMI, consultez Conception de classes MOF (Managed Object Format). L’inscription du fournisseur et de ses classes est généralement incluse dans le fichier MOF, bien qu’il soit possible d’utiliser l’API COM pour créer des classes et des méthodes. Pour plus d’informations, consultez Développement d’un fournisseur WMI.

Notes

Pour vous assurer que toutes vos définitions de classe WMI pour les objets managés sont restaurées dans le référentiel WMI si WMI rencontre un échec et redémarre, utilisez l’instruction de préprocesseur de récupération automatique #pragma dans votre fichier MOF (Managed Object Format).

 

Après avoir créé le fichier MOF, compilez-le à l’aide de l’outil Mofcomp.exe. Cela vous informe des erreurs dans votre fichier MOF et ajoute la classe WMI définie dans le fichier MOF au référentiel WMI afin que la classe puisse être utilisée par un fournisseur.

Détermination d’un type de fournisseur à implémenter

WMI prend en charge un certain nombre de types de fournisseurs, ce qui détermine la nature des informations fournies et des opérations prises en charge par les fournisseurs.

Les types de fournisseurs sont les suivants :

La grande majorité des fournisseurs sont des fournisseurs d’instance et des fournisseurs de méthodes. Un fournisseur d’instance est le fournisseur le plus courant et fournit les instances d’une classe donnée. Un fournisseur de méthodes implémente les méthodes d’une ou plusieurs classes. Pour plus d’informations sur les types de fournisseurs, consultez Développement d’un fournisseur WMI.

Détermination d’un modèle d’hébergement (implémentation) pour un fournisseur

Les fournisseurs WMI sont des fichiers binaires implémentés en tant qu’objets COM. Cela signifie que chaque fournisseur a un fichier DLL qui peut être exécuté dans un processus et un contexte de sécurité spécifiques. C’est ce que WMI appelle le modèle d’hébergement. WMI offre différentes façons d’héberger des fournisseurs, mais l’approche la plus courante consiste à utiliser le modèle de fournisseur couplé (exécuté sous le processus WMI) dans le contexte de sécurité NetworkServiceHost. Un fournisseur WMI peut être classé comme couplé ou découplé.

Le terme fournisseur couplé ou découplé détermine sous quel processus hôte le fournisseur est exécuté par rapport au processus WMIPRVSE.EXE fourni par WMI. Une bonne pratique consiste à déterminer si les données de gestion exposées par le fournisseur et l’API ou l’application sur laquelle il s’appuie sont toujours disponibles dans le système ou non. Si l’API ou l’application sur laquelle le fournisseur s’appuie est toujours disponible (en cours d’exécution sur le système), le fournisseur doit être un fournisseur couplé. Dans le cas contraire, il doit s’agir d’un fournisseur découplé. Pour plus d’informations sur les modèles d’hébergement, consultez Hébergement et sécurité des fournisseurs.

Pour plus d’informations sur la création d’un fournisseur couplé, consultez Fourniture de données à WMI en écrivant un fournisseur. Pour plus d’informations sur l’incorporation d’un fournisseur découplé dans une application, consultez Incorporation d’un fournisseur dans une application.

Les fournisseurs couplés peuvent être décrits comme étant in-process (in-proc) ou out-of-process (out-of-proc). Lorsqu’un fournisseur couplé est un fournisseur in-proc, il s’exécute sous un processus d’hébergement WMI partagé WMIPRVSE.EXE et est implémenté en tant que serveur COM in-proc (.dll). Lorsqu’un fournisseur est un fournisseur out-of-proc, il est démarré par WMI à la demande d’un client ou d’un événement, mais il s’exécute en tant que processus séparé et est implémenté en tant qu’exécutable (.exe).

Implémentation d’un fournisseur

Un fournisseur peut être implémenté des manières suivantes :

  • À l’aide de l’assistant ATL dans Visual Studio.

    L’assistant ATL génère le code du fournisseur qui implémente un fournisseur couplé. Lors de l’utilisation de l’assistant ATL, vous pouvez spécifier que vous souhaitez créer un modèle d’exécution de fournisseur in-proc (.dll) ou out-of-proc (.exe).

  • Définition d’un objet COM pour contenir votre fournisseur.

    Le code du fournisseur est écrit en C++. Pour plus d’informations, consultez Fourniture de données à WMI en écrivant un fournisseur.

  • En utilisant les classes de l’espace de noms Microsoft.Management.Infrastructure dans le .NET Framework pour créer un fournisseur à l’aide de code managé. (L’espace de noms System.Management.Instrumentation n’est plus pris en charge.)

    Ce processus crée un fournisseur découplé.

Inscription d’un fournisseur auprès de WMI et du système

Avant d’utiliser le fournisseur d’un consommateur, il est important de l’inscrire auprès du système WMI et du sous-système Windows COM.

Un fichier MOF peut contenir plusieurs types de fournisseurs pour les mêmes classes. Le même nom de fournisseur est inscrit en tant que, par exemple, instance ou fournisseur de méthode. Pour plus d’informations, consultez Inscription d’un fournisseur.

Test d’un fournisseur

Lorsque le code du fournisseur est inscrit, il est important de tester correctement le fournisseur en utilisant le fournisseur de différents consommateurs (par exemple, des scripts, du code managé .NET et des consommateurs C++).

Effectuez les tâches suivantes pour tester votre fournisseur :

  • Assurez-vous que votre fournisseur se charge correctement en effectuant le suivi des notifications d’événements MSFT_WmiProvider_OperationEvent. Ces événements vous informent des échecs de chargement du fournisseur. D’autres classes de résolution des problèmes qui peuvent être utiles sont Win32_ProcessStartTrace et Win32_ProcessStopTrace. Pour plus d’informations sur la résolution des problèmes liés aux fournisseurs, consultez Débogage des fournisseurs et Classes de configuration et de résolution des problèmes des fournisseurs.
  • Si le fournisseur est un fournisseur d’instance ou de méthode, veillez à tester chaque fonctionnalité de fournisseur une par une pour éviter toute confusion dans le suivi de votre logique de code.
  • Pour un fournisseur d’instance, créez une application cliente ou un script qui appelle chaque interface du fournisseur (énumération, get, put et delete). Même si le fournisseur n’est pas censé implémenter quoi que ce soit, il doit retourner un message « non pris en charge ». Vous trouverez les valeurs de retour déjà définies dans les codes de retour WMI.
  • Pour vous assurer que le contexte de sécurité souhaité fonctionne comme prévu, appelez les opérations prises en charge par le fournisseur à partir d’un contexte de sécurité non administrateur. Le fournisseur doit prendre en charge l’emprunt d’identité. Si un utilisateur ne disposant pas des informations d’identification de sécurité appropriées tente de mettre à jour des données ou d’effectuer une opération qui exécute une méthode, votre fournisseur doit refuser l’accès avec le message d’erreur approprié.
  • Pour plus d’informations sur la sécurité du fournisseur, consultez Sécurisation de votre fournisseur.

Développement d’un fournisseur WMI

Hébergement et sécurité du fournisseur

Fourniture de données à WMI en écrivant un fournisseur

Incorporation d’un fournisseur dans une application

Enregistrement d’un fournisseur

Résolution des problèmes liés aux applications clientes WMI

Sécurisation de votre fournisseur

Obtention et fourniture de données sur une plateforme 64 bits