EVT_WDF_DEVICE_RELATIONS_QUERY Rückruffunktion (wdfdevice.h)
[Gilt nur für KMDF]
Der EvtDeviceRelationsQuery-Ereignisrückruf eines Treibers meldet Änderungen in den Beziehungen zwischen Geräten, die vom Treiber unterstützt werden.
Syntax
EVT_WDF_DEVICE_RELATIONS_QUERY EvtWdfDeviceRelationsQuery;
void EvtWdfDeviceRelationsQuery(
[in] WDFDEVICE Device,
[in] DEVICE_RELATION_TYPE RelationType
)
{...}
Parameter
[in] Device
Ein Handle für ein Framework-Geräteobjekt.
[in] RelationType
Ein DEVICE_RELATION_TYPE typisierter Enumeratorwert. Die DEVICE_RELATION_TYPE-Enumeration ist in wdm.h definiert.
Rückgabewert
Keine
Bemerkungen
Um die Rückruffunktion EvtDeviceRelationsQuery zu registrieren, muss ein Treiber WdfDeviceInitSetPnpPowerEventCallbacks aufrufen.
Die meisten frameworkbasierten Treiber müssen diese Rückruffunktion nicht bereitstellen.
Während der Systeminitialisierung listet der Plug & Play-Manager alle Geräte im System auf, indem er eine IRP_MN_QUERY_DEVICE_RELATIONS Anforderung an den Treiberstapel sendet. Wenn ein frameworkbasierter Treiber eine EvtDeviceRelationsQuery-Rückruffunktion registriert hat, ruft das Framework sie auf. Der Funktionstreiber für den Bus muss alle untergeordneten Geräte melden, die an den Bus angeschlossen sind.
Nachdem das Framework die IoInvalidateDeviceRelations-Routine aufgerufen hat, um eine geänderte Beziehung zwischen den Geräten auf dem Bus des Treibers zu melden, sendet der Plug & Play-Manager eine weitere IRP_MN_QUERY_DEVICE_RELATIONS Anforderung an den Treiberstapel. Das Framework ruft dann die Rückruffunktion EvtDeviceRelationsQuery des Treibers auf, damit der Treiber Details zur Änderung angeben kann.
Die Art der Arbeit, die ein Treiber ausführen muss, hängt vom Wert ab, der für den Parameter RelationType empfangen wird. Der Wert kann in folgenden Formen vorliegen:
BusRelations
-
Die meisten frameworkbasierten Treiber melden keine Busbeziehungen in einer EvtDeviceRelationsQuery-Rückruffunktion. Stattdessen befolgen die Treiber die Richtlinien, die unter Aufzählen der Geräte in einem Bus beschrieben werden.
EjectionRelations
-
Die meisten frameworkbasierten Treiber melden keine Auswurfbeziehungen in einer EvtDeviceRelationsQuery-Rückruffunktion. Stattdessen ruft der Treiber für den Bus des Geräts WdfPdoAddEjectionRelationsPhysicalDevice und WdfPdoRemoveEjectionRelationsPhysicalDevice auf.
RemovalRelations
-
Die meisten frameworkbasierten Treiber melden keine Entfernungsbeziehungen in einer EvtDeviceRelationsQuery-Rückruffunktion. Stattdessen rufen die Treiber WdfDeviceAddRemovalRelationsPhysicalDevice und WdfDeviceRemoveRemovalRelationsPhysicalDevice auf.
TargetDeviceRelation
-
Frameworkbasierte Treiber müssen die Zielbeziehung eines Geräts nicht melden. Stattdessen verarbeitet das Framework diese Anforderung.
Das Framework kann die Rückruffunktion EvtDeviceRelationsQuery mit dem RelationType-WertEjectionRelations oder RemovalRelations aufrufen, auch wenn das Gerät entfernt wird.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
Kopfzeile | wdfdevice.h (einschließen von Wdf.h) |
IRQL | PASSIVE_LEVEL |