Gestion des demandes WMI
Tous les pilotes doivent définir un point d’entrée de table de répartition pour une routine DispatchSystemControl afin de gérer les requêtes WMI. Si un pilote s’inscrit en tant que fournisseur de données WMI, il doit gérer toutes les requêtes WMI. Sinon, le pilote doit transférer toutes les demandes WMI au pilote inférieur suivant.
Tous les IIP WMI ont le code principal IRP_MJ_SYSTEM_CONTROL et l’un des codes mineurs suivants :
IRP_MN_REGINFO, IRP_MN_REGINFO_EX : interroge ou met à jour les informations d’inscription d’un pilote après que le pilote a appelé IoWMIRegistrationControl.
IRP_MN_QUERY_ALL_DATA, IRP_MN_QUERY_SINGLE_INSTANCE : requêtes pour toutes les instances ou un seul instance d’un bloc de données donné.
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE : demande au pilote de modifier un ou plusieurs éléments dans un instance d’un bloc de données.
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION : demande au pilote de commencer à accumuler des données pour un bloc que le pilote a enregistré comme coûteux à collecter, ou de cesser d’accumuler des données pour un tel bloc.
IRP_MN_ENABLE_EVENTS, IRP_MN_DISABLE_EVENTS : demande au pilote de commencer à envoyer une notification d’un événement donné si l’événement se produit alors qu’il est activé, ou de cesser d’envoyer la notification d’un tel événement.
IRP_MN_EXECUTE_METHOD : demande au pilote d’exécuter une méthode associée à un bloc de données.
Le composant en mode noyau WMI envoie des IIP WMI à chaque fois après l’inscription réussie d’un pilote en tant que fournisseur de données WMI, généralement lorsqu’un consommateur de données en mode utilisateur a demandé des informations WMI pour l’appareil d’un pilote. Si un pilote s’inscrit en tant que fournisseur de données WMI en appelant IoWMIRegistrationControl, il doit gérer chaque requête WMI suivante de l’une des manières suivantes :
Appelez la routine de bibliothèque WMI en mode noyau WmiSystemControl. Un pilote peut appeler WmiSystemControl pour gérer les requêtes concernant uniquement les blocs qui n’utilisent pas de noms de instance dynamiques et qui basent des noms de instance statiques sur une seule chaîne de nom de base ou l’ID de instance d’appareil d’un PDO. Pour plus d’informations, consultez Appel de WmiSystemControl pour gérer les irps WMI.
Dans sa routine DispatchSystemControl , traitez et effectuez toute requête étiquetée avec le pointeur vers son objet d’appareil que le pilote a passé dans son appel à IoWMIRegistrationControl, puis transférez d’autres demandes IRP_MJ_SYSTEM_CONTROL au pilote inférieur suivant. Pour plus d’informations, consultez Traitement des IIP WMI dans une routine DispatchSystemControl.
Pour obtenir la liste des IRP mineurs WMI, consultez Les IIP secondaires WMI.