Freigeben über


EVT_WDF_DEVICE_RELATIONS_QUERY Rückruffunktion (wdfdevice.h)

[Gilt nur für KMDF]

Ein Treiber EvtDeviceRelationsQuery Ereignisrückruf meldet Änderungen an 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 zu einem Framework-Geräteobjekt.

[in] RelationType

Ein DEVICE_RELATION_TYPE-Typ-Enumeratorwert. Die DEVICE_RELATION_TYPE-Enumeration wird in wdm.hdefiniert.

Rückgabewert

Nichts

Bemerkungen

Um die EvtDeviceRelationsQuery Rückruffunktion zu registrieren, muss ein Treiber WdfDeviceInitSetPnpPowerEventCallbacksaufrufen.

Die meisten frameworkbasierten Treiber müssen diese Rückruffunktion nicht bereitstellen.

Während der Systeminitialisierung listet der Plug and Play-Manager alle Geräte auf dem System auf, indem eine IRP_MN_QUERY_DEVICE_RELATIONS Anforderung an den Treiberstapel gesendet wird. Wenn ein frameworkbasierter Treiber einen 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 im Bus des Fahrers zu melden, sendet der Plug and Play-Manager eine weitere IRP_MN_QUERY_DEVICE_RELATIONS Anforderung an den Treiberstapel. Das Framework ruft dann die EvtDeviceRelationsQuery Rückruffunktion des Treibers auf, damit der Treiber Details zur Änderung bereitstellen kann.

Die Art der Arbeit, die ein Treiber ausführen muss, hängt vom für den parameter RelationType empfangenen Wert ab. Der Wert kann eine der folgenden Sein:

BusRelations-

    Die meisten frameworkbasierten Treiber melden keine Busbeziehungen in einer EvtDeviceRelationsQuery-Rückruffunktion. Stattdessen folgen die Treiber den Richtlinien, die unter Enumerating the Devices on a Bus beschrieben werden.

EjectionRelations-

    Die meisten frameworkbasierten Treiber melden keine Ejection-Beziehungen 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 behandelt das Framework diese Anforderung.

Das Framework kann die EvtDeviceRelationsQuery- Rückruffunktion mit einem RelationType- Wert von EjectionRelations oder RemovalRelations aufrufen, auch wenn das Gerät entfernt wird.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Minimale KMDF-Version 1.0
Header- wdfdevice.h (einschließen Wdf.h)
IRQL- PASSIVE_LEVEL