Utilisation de la bibliothèque WMI pour inscrire des blocs
Un pilote peut utiliser la bibliothèque WMI pour gérer les demandes de IRP_MN_REGINFO et de IRP_MN_REGINFO_EX s’il inscrit des blocs qui n’utilisent pas de noms de instance dynamiques ou qui utilisent des noms de instance statiques basés sur une chaîne de nom de base définie par le pilote ou PDO. Dans ce cas, le pilote :
Appelle WmiSystemControl avec un pointeur vers l’objet de périphérique du pilote, un pointeur vers une structure WMILIB_CONTEXT et un pointeur vers l’IRP
La structure WMILIB_CONTEXT indique le nombre de blocs à inscrire (GuidCount) et pointe vers une liste de structures WMIGUIDREGINFO (GuidList) qui spécifient le GUID, le nombre d’instances et les indicateurs d’inscription qui se rapportent au bloc correspondant. Il définit également des points d’entrée pour les routines de rappel DpWmiXxx requises et facultatives du pilote.
Lorsque WMI appelle la routine DpWmiQueryReginfo du pilote, le pilote spécifie le chemin d’accès au Registre du pilote, son nom de ressource MOF, les indicateurs d’inscription relatifs à tous ses blocs et les informations que WMI utilise pour nommer les instances des blocs de données du pilote, qui peuvent être un pointeur vers l’objet de périphérique physique passé à la routine AddDevice du pilote ou une chaîne sur laquelle baser des noms de instance statiques.
Un pilote doit initialiser des points d’entrée pour ses routines de rappel DpWmiXxx dans la structure WMILIB_CONTEXT avant d’appeler WmiSystemControl, mais peut différer l’initialisation de GuidCount et GuidList dans la structure WMILIB_CONTEXT jusqu’à ce que WMI appelle la routine DpWmiQueryReginfo du pilote.