Registrieren für Benachrichtigung zum Ändern des Zielgeräts
Ein Treiber registriert sich für die Benachrichtigung über PnP-Zielgeräteänderungsereignisse, indem er IoRegisterPlugPlayNotification aufruft.
Die folgenden Informationen gelten für das Aufrufen dieser Routine für Benachrichtigungen zu Zielgeräteänderungen:
Geben Sie eine EventCategory von EventCategoryTargetDeviceChange an.
EventCategoryData muss auf das Dateiobjekt für das Gerät verweisen, auf dem die Benachrichtigung angefordert wird.
Wenn die Rückrufroutine des Treibers Zugriff auf das Dateiobjekt erfordert, sollte der Treiber vor dem Aufrufen von IoRegisterPlugPlayNotification einen Verweis auf das Dateiobjekt entfernen.
Wenn die Rückrufroutine des Treibers keinen Zugriff auf das Dateiobjekt erfordert, muss der Treiber nicht auf das Objekt verweisen.
Nachdem das Dateiobjekt geschlossen wurde, empfängt der Treiber weiterhin Benachrichtigungen für das Gerät, bis der Treiber seine Benachrichtigungsregistrierung entfernt. Dieser Entwurf ermöglicht es dem Treiber beispielsweise, Benachrichtigungen über GUID_TARGET_DEVICE_REMOVE_CANCELLED Ereignisse zu erhalten.
Geben Sie einen vom Treiber definierten Kontext an, den der PnP-Manager an die Rückrufroutine übergibt.
Ein Treiber kann den Parameter Context verwenden, um Informationen über den aktuellen Zustand des Dateiobjekts beizubehalten (z. B. wurde es geschlossen/gelöscht).
Ein Treiber kann auch den Kontext verwenden, um den Pfad zu speichern, den er ursprünglich zum Öffnen des Geräts verwendet hat. Ein Treiber kann diesen Pfad verwenden, um das Gerät nach einem abgebrochenen Entfernungsvorgang erneut zu öffnen. (Weitere Informationen finden Sie unter Behandeln eines GUID_TARGET_DEVICE_REMOVE_CANCELLED-Ereignisses .)
Ein Treiber entfernt eine Benachrichtigungsregistrierung, indem er IoUnregisterPlugPlayNotification mit der von IoRegisterPlugPlayNotificationzurückgegebenen NotificationEntry aufruft. Wenn der Treiber bei der Registrierung zur Benachrichtigung einen Verweis auf das Dateiobjekt herausgenommen hat und dieser Verweis noch aussteht, muss der Treiber den Verweis freigeben, nachdem er die Registrierung entfernt hat.