Ü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:
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.
Der PnP-Manager ruft die Rückrufroutine des Treibers auf, wenn ein Ereignis in der registrierten Kategorie auftritt.
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