Freigeben über


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