Freigeben über


Behandeln von Enumerationsanforderungen

Der PnP-Manager kann einen Busfahrer jederzeit auffordern, seine untergeordneten Elemente aufzuzählen. (Wenn Sie mit WDM-Schnittstellen vertraut sind, werden Enumerationsanforderungen IRP_MN_QUERY_DEVICE_RELATIONS Anforderungen mit dem Beziehungstyp BusRelations.) Frameworkbasierte Treiber sehen diese Anforderungen nicht. Stattdessen verarbeitet das Framework die Anforderungen mithilfe der Informationen, die in der untergeordneten Liste eines Geräts gespeichert sind. Der Treiber ist dafür verantwortlich, die untergeordnete Liste auf dem neuesten Stand zu halten, damit das Framework korrekte Informationen bereitstellen kann, wenn der PnP-Manager eine Enumeration anfordert.

Frameworkbasierte Bustreiber, die die dynamische Enumeration unterstützen, können eine Anforderung zum erneuten Aufzählen eines bestimmten untergeordneten Geräts empfangen. Eine solche Anforderung kann vom Funktionstreiber des untergeordneten Geräts gesendet werden, nachdem der Treiber einen Gerätefehler erkannt hat. (Das Framework unterstützt diese Art von Anforderung, indem es die REENUMERATE_SELF_INTERFACE_STANDARD-Schnittstelle implementiert, bei der es sich um eine vom Treiber definierte Standardschnittstelle handelt, die in wdm.h definiert ist.)

Frameworkbasierte Bustreiber, die die dynamische Enumeration unterstützen, können eine EvtChildListDeviceReenumerated-Rückruffunktion bereitstellen, die das Framework aufruft, wenn es eine Erneuteumzählungsanforderung vom Treiber eines untergeordneten Geräts empfängt. Wenn diese Rückruffunktion TRUE zurückgibt oder nicht vorhanden ist, markiert das Framework das untergeordnete Gerät als nicht mehr vorhanden und informiert den PnP-Manager darüber, dass die untergeordnete Liste des Bustreibers geändert wurde. Daher fordert der PnP-Manager eine Neuaufzählung an, und das Framework ruft die Rückruffunktion EvtChildListCreateDevice des Treibers auf, die eine neue PDO für das untergeordnete Gerät erstellt.