Ein Benutzer, der ein Gerät ansteckt
Im folgenden Szenario enthält der Geräteknoten einen KMDF-Bustreiber und mindestens eine KMDF-Funktion oder Filtertreiber, die ein PnP-Gerät unterstützen.
Wenn ein Benutzer das Gerät an den Bus ansteckt, während das System ausgeführt wird, führen der Bustreiber des Geräts und das Framework die folgenden Aufgaben aus:
Der Bustreiber für das Gerät erkennt das Gerät und ruft WdfChildListAddOrUpdateChildDescriptionAsPresent auf. (Dieser Prozess wird als "dynamische Enumeration" bezeichnet.)
Das Framework ruft die Rückruffunktion EvtChildListCreateDevice des Bustreibers auf, damit der Bustreiber WdfDeviceCreate aufrufen kann, um ein Frameworkgeräteobjekt für das physische Gerät (ein PDO) zu erstellen.
Das Framework ruft die Rückruffunktionen EvtDeviceResourcesQuery und EvtDeviceResourceRequirementsQuery des Bustreibers auf, um die Systemhardwareressourcen zu ermitteln, die das Gerät benötigt.
Weitere Informationen zur Einschaltsequenz für einen KMDF-Bustreiber finden Sie unter Einschaltsequenz für einen Bustreiber.
Als Nächstes bestimmt der PnP-Manager, welche zusätzlichen Treiber (Funktions- und Filtertreiber) das Gerät benötigt. Wenn diese Treiber noch nicht geladen sind, lädt der PnP-Manager sie und ruft ihre DriverEntry-Routinen auf. Für jede Funktion oder jeden Filtertreiber werden die folgenden Aktionen ausgeführt:
Das Framework ruft die EvtDriverDeviceAdd-Rückruffunktion jedes zusätzlichen Treibers auf, damit der Treiber WdfDeviceCreate aufrufen kann, um ein Framework-Geräteobjekt zu erstellen, das das Gerät für den Treiber darstellt. Funktionstreiber erstellen ein funktionales Geräteobjekt (Functional Device Object, FDO), und Filtertreiber erstellen ein Filtergeräteobjekt (Filter DO).
Das Framework ruft die Rückruffunktion EvtDeviceFilterRemoveRequirequirements der einzelnen Funktionen und Filtertreiber und dann die Rückruffunktion EvtDeviceFilterAddResourceRequirements jedes Treibers auf. Unmittelbar vor dem Start des Geräts ruft das Framework die Rückruffunktion EvtDeviceRemoveAddedResources auf. Diese drei Rückruffunktionen ermöglichen es den Filter- und Funktionstreibern, die Liste der Hardwareressourcen zu ändern, die das Gerät benötigt, bevor der PnP-Manager dem Gerät Ressourcen zuweist. Weitere Informationen finden Sie unter Hardwareressourcen für Framework-Based Treiber.
Das Framework stellt sicher, dass das Gerät seinen Betriebszustand (D0) erreicht hat.
Für jede Funktion und jeden Filtertreiber, der das Gerät unterstützt, führt das Framework nacheinander einen Treiber nacheinander aus, beginnend mit dem Treiber, der am niedrigsten im Treiberstapel ist:
- Das Framework ruft die EvtDevicePrepareHardware-Rückruffunktion des Treibers auf (sofern vorhanden) und übergibt die Liste der Hardwareressourcen, die der PnP-Manager dem Gerät zugewiesen hat.
- Das Framework ruft die EvtDeviceD0Entry-Rückruffunktion des Treibers auf (sofern vorhanden).
- Das Framework ruft die EvtInterruptEnable-Rückruffunktion des Treibers (sofern vorhanden) für jeden Interrupt auf und ruft dann die EvtDeviceD0EntryPostInterruptsEnabled-Rückruffunktion des Treibers auf (sofern vorhanden), damit der Treiber Geräteunterbrechungen aktivieren kann.
- Wenn die Hardware und der Treiber DMA unterstützen, ruft das Framework die Rückruffunktionen EvtDmaEnablerFill, EvtDmaEnablerEnabler und EvtDmaEnablerSelfManagedIoStart des Treibers (sofern vorhanden) für jeden erstellten DMA-Kanal auf.
- Das Framework ruft die EvtChildListScanForChildren-Rückruffunktion des Treibers auf (sofern vorhanden).
- Das Framework startet alle stromverwalteten E/A-Warteschlangen des Geräts.
- Wenn der Treiber selbstverwaltete E/A verwendet, ruft das Framework die Rückruffunktion EvtDeviceSelfManagedIoInit des Treibers auf.
Weitere Informationen zur Einschaltsequenz für KMDF-Funktion oder Filtertreiber findest du unter Power-Up Sequence for a Function or Filter Driver.