Behandeln von WMI-Anforderungen
Alle Treiber müssen einen Einstiegspunkt für eine DispatchSystemControl-Routine festlegen, um WMI-Anforderungen verarbeiten zu können. Wenn ein Treiber als WMI-Datenanbieter registriert wird, muss er alle WMI-Anforderungen verarbeiten. Andernfalls muss der Treiber alle WMI-Anforderungen an den nächst niedrigeren Treiber weiterleiten.
Alle WMI-IRPs verfügen über den Hauptcode IRP_MJ_SYSTEM_CONTROL und einen der folgenden Nebencodes:
IRP_MN_REGINFO, IRP_MN_REGINFO_EX: Fragt die Registrierungsinformationen eines Treibers ab oder aktualisiert sie, nachdem der Treiber IoWMIRegistrationControl aufgerufen hat.
IRP_MN_QUERY_ALL_DATA, IRP_MN_QUERY_SINGLE_INSTANCE: Abfragen für alle Instanzen oder eine einzelne instance eines bestimmten Datenblocks.
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE– Fordert den Treiber an, ein einzelnes Element oder mehrere Elemente in einer instance eines Datenblocks zu ändern.
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION– Fordert den Treiber auf, mit der Erfassung von Daten für einen Block zu beginnen, die der Treiber als teuer registriert hat, oder die Datensammlung für einen solchen Block zu beenden.
IRP_MN_ENABLE_EVENTS, IRP_MN_DISABLE_EVENTS– Fordert den Treiber an, mit dem Senden einer Benachrichtigung über ein bestimmtes Ereignis zu beginnen, wenn das Ereignis auftritt, während es aktiviert ist, oder das Senden von Benachrichtigungen über ein solches Ereignis zu beenden.
IRP_MN_EXECUTE_METHOD: Fordert den Treiber an, eine Methode auszuführen, die einem Datenblock zugeordnet ist.
Die WMI-Kernelmoduskomponente sendet WMI-IRPs jederzeit nach erfolgreicher Registrierung eines Treibers als WMI-Datenanbieter, in der Regel, wenn ein Benutzermodusdatenverbraucher WMI-Informationen für das Gerät eines Treibers angefordert hat. Wenn ein Treiber durch Aufrufen von IoWMIRegistrationControl als WMI-Datenanbieter registriert wird, muss er jede nachfolgende WMI-Anforderung auf eine der folgenden Arten verarbeiten:
Rufen Sie die Kernelmodus-WMI-Bibliotheksroutine WmiSystemControl auf. Ein Treiber kann WmiSystemControl aufrufen, um Nur Anforderungen zu Blöcken zu behandeln, die keine dynamischen instance Namen verwenden, und die statischen instance Namen auf einer einzelnen Basisnamenzeichenfolge oder dem Gerät instance ID eines PDO basieren. Weitere Informationen finden Sie unter Aufrufen von WmiSystemControl zum Behandeln von WMI-IRPs.
Verarbeiten und vervollständigen Sie in der DispatchSystemControl-Routine jede solche Anforderung, die mit dem Zeiger auf das Geräteobjekt gekennzeichnet ist, das der Treiber in seinem Aufruf von IoWMIRegistrationControl übergeben hat, und leiten Sie andere IRP_MJ_SYSTEM_CONTROL Anforderungen an den nächstniedrigen Treiber weiter. Weitere Informationen finden Sie unter Verarbeiten von WMI-IRPs in einer DispatchSystemControl-Routine.
Eine Liste der WMI-Neben-IRPs finden Sie unter WMI-Neben-IRPs.