Initialisation de la prise en charge de WMI dans votre pilote

[S’applique uniquement à KMDF]

Pour prendre en charge les blocs de données WMI, un pilote basé sur l’infrastructure :

  • Inscrit les noms de ressources de format d’objet managé (MOF) de tous les fournisseurs de données WMI personnalisés qui ne sont pas définis dans Wmicore.mof.

  • Crée un ou plusieurs objets WMI instance pour représenter les blocs de données qu’il peut lire ou écrire.

  • Implémente éventuellement une ou plusieurs fonctions de rappel d’événements pour fournir les données WMI que le pilote fournit.

  • Inscrivez chaque objet WMI instance pour le rendre disponible pour les clients WMI.

Pour initialiser sa prise en charge WMI, un pilote KMDF suit ces étapes, généralement dans son rappel EvtDriverDeviceAdd ou EvtDeviceSelfManagedIoInit :

  1. Un pilote qui fournit un fichier MOF pour prendre en charge des fournisseurs de données WMI personnalisés doit appeler la méthode WdfDeviceAssignMofResourceName pour inscrire un nom de ressource MOF avant que le pilote ne crée des objets de fournisseur WMI qui représentent le fournisseur de données.

  2. Initialisez une structure de configuration de fournisseur WMI et créez éventuellement un objet de fournisseur WMI (WDFWMIPROVIDER).

  3. Initialisez une structure de configuration de instance WMI et créez un objet instance WMI (WDFWMIINSTANCE).

L’infrastructure crée un fournisseur WMI par défaut lorsqu’un pilote KMDF crée son premier instance WMI. Par conséquent, si le pilote ne nécessite qu’un seul fournisseur WMI, il n’est pas nécessaire d’appeler la méthode de création du fournisseur (WdfWmiProviderCreate). Toutefois, le pilote doit remplir la structure de configuration du fournisseur, car cette structure fournit des informations sur le fournisseur utilisé par l’infrastructure lors de la création du instance.

Si votre pilote crée une instance unique de chaque bloc de données WMI qu’il prend en charge, le pilote appelle WdfWmiInstanceCreate, passant à la fois une structure WDF_WMI_PROVIDER_CONFIG et une structure WDF_WMI_INSTANCE_CONFIG. Cet appel unique configure l’objet fournisseur WMI fourni par l’infrastructure unique et crée un objet de instance WMI.

Si votre pilote crée plusieurs instances de ses blocs de données WMI, il doit appeler WdfWmiProviderCreate et WdfWmiInstanceCreate

Inscription d’instances de fournisseur

Pour que les clients WMI puissent accéder aux blocs de données WMI de votre pilote, le pilote doit inscrire ses instances de fournisseur auprès du service WMI du système. Le pilote peut utiliser l’une des techniques suivantes pour inscrire un fournisseur instance :

  • Définissez le membre Register de la structure WDF_WMI_INSTANCE_CONFIG du fournisseur instance sur TRUE.

    Si votre pilote définit Register sur TRUE, l’infrastructure inscrit automatiquement le instance la première fois que l’appareil entre dans son état de fonctionnement (D0).

  • Appelez la méthode WdfWmiInstanceRegister .

    Si votre pilote appelle WdfWmiInstanceRegister après avoir appelé WdfWmiInstanceCreate, l’infrastructure enregistre le instance une fois que l’appareil est dans son état de fonctionnement (D0).

L’infrastructure annule automatiquement l’inscription de chaque fournisseur instance lorsque l’appareil du instance est supprimé (et avant d’appeler la fonction de rappel d’événement EvtDeviceSelfManagedIoCleanup). Pour plus d’informations sur l’ordre dans lequel l’infrastructure appelle les fonctions de rappel d’un pilote, consultez Scénarios pnP et de gestion de l’alimentation.

Votre pilote peut désinscrire un instance à tout moment en appelant WdfWmiInstanceDeregister.