IoUnregisterPlugPlayNotificationEx-Funktion (wdm.h)

Die IoUnregisterPlugPlayNotificationEx-Routine bricht die Registrierung der Rückrufroutine eines Treibers für Benachrichtigungen von Plug & Play (PnP)-Ereignissen ab.

Syntax

NTSTATUS IoUnregisterPlugPlayNotificationEx(
  [in] PVOID NotificationEntry
);

Parameter

[in] NotificationEntry

Ein Zeiger auf einen undurchsichtigen Wert, der die Registrierung darstellt, die abgebrochen werden soll. Der Anrufer hat diesen Wert zuvor abgerufen, indem er die IoRegisterPlugPlayNotification-Routine aufruft.

Rückgabewert

IoUnregisterPlugPlayNotificationEx gibt STATUS_SUCCESS zurück, wenn der NotificationEntry-Parameter gültig ist.

Bemerkungen

Ein Kernelmodustreiber ruft diese Routine auf, um eine Registrierung zu entfernen, um PnP-Benachrichtigungen zu erhalten. Das heißt, ein IoUnregisterPlugPlayNotificationEx-Aufruf bricht die Registrierung einer Treiber-Rückrufroutine für eine PnP-Ereigniskategorie ab. Der Treiber hat diese Registrierung zuvor erhalten, indem er die IoRegisterPlugPlayNotification-Routine aufruft.

Nachdem ein IoUnregisterPlugPlayNotificationEx-Aufruf zurückgegeben wurde, wird die angegebene Registrierung abgebrochen und es kann keine weiteren Rückrufe auftreten.

Die IoUnregisterPlugPlayNotification-Routine ähnelt IoUnregisterPlugPlayNotificationEx, außer dass keine weiteren Rückrufe auftreten können, nachdem ein IoUnregisterPlugPlayNotification-Aufruf zurückgegeben wird.

Häufig ruft ein Treiber IoUnregisterPlugPlayNotificationEx aus einer Benachrichtigungsrückrufroutine auf. In den meisten Fällen kann der Treiber die Registrierung der Benachrichtigungs-Rückrufroutine auf diese Weise sicher löschen. Es ist jedoch unsicher für eine Benachrichtigungs-Rückrufroutine, um IoUnregisterPlugPlayNotificationEx aufzurufen, um sich selbst zu registrieren, wenn dies beide wahr sind:

  • Der Treiber legt das PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES-Flag im Parameterwert "EventCategoryFlags " fest, der dem IoRegisterPlugPlayNotification-Aufruf bereitgestellt wird, der die Rückrufroutine für Benachrichtigungen registriert.
  • Der IoRegisterPlugPlayNotification-Aufruf , der die Benachrichtigungs-Rückrufroutine registriert, wurde noch nicht zurückgegeben.
Die Rückrufroutine darf keine Routine aufrufen, die die Ausführung des Threads blockieren kann, auf dem die Rückrufroutine ausgeführt wird. Wenn beispielsweise eine schlecht konzipierte Rückrufroutine ein Arbeitselement platziert, das IoUnregisterPlugPlayNotificationEx in der Arbeitselementwarteschlange aufruft, und wartet dann, bis ein Arbeitsthread das Arbeitselement abgeschlossen hat, würde es zu einer Totsperre des Betriebssystems führen.

Treiber sollten die Registrierung einer Benachrichtigungsanrufroutine zuerst abbrechen und dann einen Kontextpuffer freigeben, der der Routine zugeordnet ist.

Ein Treiber kann nicht geladen werden, bis er alle PnP-Benachrichtigungsregistrierungen entfernt, da jede aktive Registrierung einen zählenden Verweis auf das Treiberobjekt enthält, das das geladene Bild des Treibers darstellt.

Weitere Informationen finden Sie unter "PnP-Benachrichtigung verwenden".

Requirements (Anforderungen)

   
Unterstützte Mindestversion (Client) Verfügbar ab Windows 7.
Zielplattform Universell
Header wdm.h (enthalten Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Weitere Informationen

IoRegisterPlugPlayNotification

IoUnregisterPlugPlayNotification