Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die IoUnregisterPlugPlayNotificationEx Routine bricht die Registrierung der Rückrufroutine eines Treibers für Benachrichtigungen über Plug and Play -Ereignisse (PnP) 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 Aufrufer hat diesen Wert zuvor durch Aufrufen der IoRegisterPlugPlayNotification Routine abgerufen.
Rückgabewert
IoUnregisterPlugPlayNotificationEx gibt STATUS_SUCCESS zurück, wenn der parameter NotificationEntry gültig ist.
Bemerkungen
Ein Kernelmodustreiber ruft diese Routine auf, um eine Registrierung für den Empfang von PnP-Benachrichtigungen zu entfernen. Das heißt, ein IoUnregisterPlugPlayNotificationEx Anruf bricht die Registrierung einer Treiberrü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 können keine weiteren Rückrufe ausgeführt werden.
Die IoUnregisterPlugPlayNotification Routine ähnelt IoUnregisterPlugPlayNotificationEx, mit der Ausnahme, dass keine weiteren Rückrufe nach einem IoUnregisterPlugPlayNotification Aufruf zurückgegeben werden können.
Häufig ruft ein Treiber IoUnregisterPlugPlayNotificationEx aus einer Benachrichtigungsrückrufroutine auf. In den meisten Fällen kann der Treiber die Registrierung der Benachrichtigungsrückrufroutine auf diese Weise sicher löschen. Für eine Rückrufroutine für Benachrichtigungen ist es jedoch nicht sicher, IoUnregisterPlugPlayNotificationEx- die Registrierung aufzuheben, wenn beides zutrifft:
Der Treiber legt das PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES Flag im EventCategoryFlags Parameterwert fest, der an den IoRegisterPlugPlayNotification Aufruf übergeben wird, der die Benachrichtigungsrückrufroutine registriert.
Der IoRegisterPlugPlayNotification Anruf, der die Benachrichtigungsrü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 gestaltete Rückrufroutine eine Arbeitsaufgabe platziert, die IoUnregisterPlugPlayNotificationEx in der Arbeitsaufgabenwarteschlange aufruft und dann wartet, bis ein Arbeitsthread die Arbeitsaufgabe abgeschlossen hat, würde dies zu einem Deadlock des Betriebssystems führen.
Treiber sollten die Registrierung einer Benachrichtigungsrückrufroutine zuerst abbrechen und dann einen Kontextpuffer freigeben, der der Routine zugeordnet ist.
Ein Treiber kann erst entladen werden, wenn er alle PnP-Benachrichtigungsregistrierungen entfernt, da jede aktive Registrierung einen gezählten Verweis auf das Treiberobjekt enthält, das das geladene Bild des Treibers darstellt.
Weitere Informationen finden Sie unter Using PnP Notification.
Anforderungen
| Anforderung | Wert |
|---|---|
| mindestens unterstützte Client- | Verfügbar ab Windows 7. |
| Zielplattform- | Universal |
| Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL- | NtosKrnl.exe |
| IRQL- | PASSIVE_LEVEL |
| DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |