Freigeben über


Übersicht über PnP-Benachrichtigungen

Der PnP-Manager bietet einen Mechanismus, mit dem Treiber und Anwendungen benachrichtigt werden können, wenn bestimmte Ereignisse auf einem bestimmten Gerät oder auf dem System im Allgemeinen auftreten. Ein Treiber kann sich für die Benachrichtigung über die folgenden Kategorien von Ereignissen registrieren:

  • EventCategoryDeviceInterfaceChange

    Wenn sich ein Treiber für diese Kategorie von Ereignissen auf einer Geräteschnittstelle registriert, benachrichtigt der PnP-Manager den Treiber über die folgenden Ereignisse:

    GUID_DEVICE_INTERFACE_ARRIVAL
    Gibt an, dass eine Geräteschnittstelle der angegebenen Klasse aktiviert wurde. Beispielsweise hat ein Benutzer dem Computer einen neuen Datenträger hinzugefügt, und der Volume-Manager hat ein neues Volume aktiviert (eine Geräteschnittstelle der Klasse "volume").

    GUID_DEVICE_INTERFACE_REMOVAL
    Gibt an, dass eine Geräteschnittstelle der angegebenen Klasse deaktiviert wurde.

    Weitere Informationen zu Geräteschnittstellen finden Sie unter IoRegisterDeviceInterface und zugehörige Routinen.

  • EventCategoryTargetDeviceChange

    Wenn sich ein Treiber für diese Kategorie von Ereignissen auf einem Gerät registriert, benachrichtigt der PnP-Manager den Treiber, wenn die folgenden Ereignisse auf dem Gerät auftreten:

    GUID_TARGET_DEVICE_QUERY_REMOVE
    Gibt an, dass der PnP-Manager die Treiber für das Gerät entfernt. Dieses Ereignis kann durch mehrere Aktionen verursacht werden, z. B.: Ein Benutzer hat angefordert, das angegebene Gerät vom Computer zu entfernen, oder ein Benutzer hat eine Updatetreiberanforderung für das Gerät ausgestellt. Diese Benachrichtigung fordert die Treiber für das Gerät auf, den bevorstehenden Entfernungsvorgang entweder zu genehmigen oder ein Veto einzufügen.

    GUID_TARGET_DEVICE_REMOVE_COMPLETE
    Gibt an, dass das angegebene Gerät vom Computer entfernt wurde oder dass ein Benutzer die Treiber für das Gerät ändert.

    GUID_TARGET_DEVICE_REMOVE_CANCELLED
    Gibt an, dass ein bevorstehender Entfernungsvorgang auf dem angegebenen Gerät abgebrochen wurde.

    GUID_XXX (benutzerdefinierte Ereignisse)
    Gibt an, dass auf dem angegebenen Gerät ein benutzerdefiniertes Ereignis aufgetreten ist.

    Ein Treiberwriter kann ein benutzerdefiniertes Ereignis für ein Gerät definieren. Wenn der Treiber (oder eine andere zugehörige Komponente) den PnP-Manager benachrichtigt, dass das benutzerdefinierte Ereignis aufgetreten ist, benachrichtigt der PnP-Manager alle Komponenten, die sich für Benachrichtigungen zu Zielgeräteänderungen auf dem Gerät registriert haben.

    Im Gegensatz zur Registrierung für Änderungen der Geräteschnittstelle, die als "passives" Interesse an der Schnittstelle angesehen werden können, deutet die Registrierung für Zielgeräteänderungen auf ein "aktives" Interesse an einem Gerät hin.

  • EventCategoryHardwareProfileChange

    Diese Kategorie umfasst die folgenden Ereignisse:

    GUID_HWPROFILE_QUERY_CHANGE
    Gibt an, dass ein Benutzer angefordert hat, das Hardwareprofil des Computers zu ändern. Der PnP-Manager fragt anhand dieser Benachrichtigung registrierte Komponenten, ob er das Hardwareprofil ändern kann, ohne den Systembetrieb zu unterbrechen. Registrierte Komponenten sind in der Regel erfolgreich für diese Abfrageanforderungen.

    GUID_HWPROFILE_CHANGE_COMPLETE
    Gibt an, dass sich das Hardwareprofil des Computers geändert hat. Wenn ein Treiber profilspezifische Einstellungen verwaltet, sollte ein solcher Treiber diese Einstellungen nach einer Änderung des Hardwareprofils aktualisieren.

    GUID_HWPROFILE_CHANGE_CANCELLED
    Gibt an, dass eine bevorstehende Änderung des Hardwareprofils abgebrochen wurde.

Die PnP-Benachrichtigung funktioniert für Kernelmoduskomponenten wie folgt:

  1. Ein Treiber registriert sich für Benachrichtigungen zu einer Kategorie von Ereignissen, indem er IoRegisterPlugPlayNotification aufruft.

    Eine PnP-Benachrichtigungsrückrufroutine bleibt registriert, bis der Treiber die Registrierung explizit entfernt.

  2. Der PnP-Manager ruft die Rückrufroutine des Treibers auf, wenn ein Ereignis in der registrierten Kategorie auftritt.

  3. Der Treiber entfernt die Rückrufregistrierung durch Aufrufen von IoUnregisterPlugPlayNotification.

Treiber dürfen kein synchrones Ereignis generieren oder warten, bis während der Verarbeitung eines Close-Ereignisses ein asynchrones Ereignis auftritt.

Weitere Informationen zur PnP-Benachrichtigung finden Sie in den folgenden Abschnitten:

Richtlinien für das Schreiben von PnP-Benachrichtigungsrückrufroutinen

Verwenden der Änderungsbenachrichtigung der PnP-Geräteschnittstelle

Verwenden der PnP-Zielgeräteänderungsbenachrichtigung

Verwenden der Änderungsbenachrichtigung für PnP-Hardwareprofile

Verwenden der benutzerdefinierten PnP-Benachrichtigung