Verwenden der WMI-Bibliothek zum Registrieren von Blöcken

Ein Treiber kann die WMI-Bibliothek verwenden, um IRP_MN_REGINFO- und IRP_MN_REGINFO_EX-Anforderungen zu verarbeiten, wenn er Blöcke registriert, die keine dynamischen instance Namen verwenden oder statische instance Namen basierend auf einer PDO- oder treiberdefinierte Basisnamenzeichenfolge verwenden. In diesem Fall ist der Treiber wie folgt:

  1. Ruft WmiSystemControl mit einem Zeiger auf das Geräteobjekt des Treibers, einem Zeiger auf eine WMILIB_CONTEXT-Struktur und einem Zeiger auf das IRP auf.

    Die WMILIB_CONTEXT-Struktur gibt die Anzahl der zu registrierenden Blöcke (GuidCount) an und verweist auf eine Liste von WMIGUIDREGINFO-Strukturen (GuidList), die die GUID, die Anzahl der Instanzen und Registrierungsflags angeben, die sich auf den entsprechenden Block beziehen. Außerdem werden Einstiegspunkte für die erforderlichen und optionalen DpWmiXxx-Rückrufroutinen des Treibers definiert.

  2. Wenn WMI die DpWmiQueryReginfo-Routine des Treibers aufruft, gibt der Treiber den Registrierungspfad des Treibers, seinen MOF-Ressourcennamen, Registrierungsflags für alle Blöcke und Informationen an, die WMI verwendet, um Instanzen der Datenblöcke des Treibers zu benennen. Dies kann entweder ein Zeiger auf das physische Geräteobjekt sein, das an die AddDevice-Routine des Treibers übergeben wird, oder eine Zeichenfolge, auf der statische instance Namen basieren.

Ein Treiber muss Einstiegspunkte für seine DpWmiXxx-Rückrufroutinen in der WMILIB_CONTEXT-Struktur initialisieren, bevor WmiSystemControl aufgerufen wird, kann jedoch die Initialisierung von GuidCount und GuidList in der WMILIB_CONTEXT-Struktur verschieben, bis WMI die DpWmiQueryReginfo-Routine des Treibers aufruft.