Un utente collega un dispositivo

Nello scenario seguente, il nodo del dispositivo include un driver del bus KMDF e uno o più driver di filtro kmDF che supportano un dispositivo PnP.

Quando un utente collega il dispositivo all'autobus mentre il sistema è in esecuzione, il driver del bus del dispositivo e il framework eseguono le attività seguenti:

Per altre informazioni sulla sequenza di alimentazione per un driver del bus KMDF, vedere Power-Up Sequence for a Bus Driver.For more information about the power-up sequence for a Bus Driver.

Successivamente, il gestore PnP determina quali driver aggiuntivi (driver di funzione e driver di filtro) il dispositivo richiede. Se questi driver non sono già caricati, il gestore PnP li carica e chiama le routine DriverEntry . Per ogni funzione o driver di filtro, si verificano le azioni seguenti:

  • Il framework chiama la funzione di callback EvtDriverDeviceAdd di ogni driver aggiuntivo in modo che il driver possa chiamare WdfDeviceCreate per creare un oggetto dispositivo framework che rappresenta il dispositivo per il driver. I driver di funzione creano un oggetto dispositivo funzionale e i driver di filtro creano un oggetto dispositivo filtro (Filter DO).

  • Il framework chiama ogni funzione e driver di filtro EvtDeviceFilterRemoveResourceRequirements funzione di callback e quindi la funzione di callback EvtDeviceFilterAddResourceRequirements di ogni driver. Immediatamente prima dell'avvio del dispositivo, il framework chiama la funzione di callback EvtDeviceRemoveAddedResources . Queste tre funzioni di callback consentono ai driver di filtro e funzione di modificare l'elenco di risorse hardware richieste dal dispositivo, prima che il gestore PnP assegni le risorse al dispositivo. Per altre informazioni, vedere Risorse hardware per i driver Framework-Based

  • Il framework garantisce che il dispositivo abbia raggiunto lo stato di alimentazione funzionante (D0).

  • Per ogni driver di funzione e filtro che supporta il dispositivo, il framework esegue le operazioni seguenti, in sequenza, un driver alla volta, a partire dal driver più basso nello stack di driver:

    1. Il framework chiama la funzione di callback EvtDevicePrepareHardware del driver (se esistente) e passa l'elenco di risorse hardware assegnate dal manager PnP al dispositivo.
    2. Il framework chiama la funzione di callback EvtDeviceD0Entry del driver (se esistente).
    3. Il framework chiama la funzione di callback EvtInterruptEnable del driver (se esistente) per ogni interrupt e quindi chiama la funzione di callback EvtDeviceD0EntryPostInterruptsEnabled del driver (se esistente), in modo che il driver possa abilitare gli interrupt del dispositivo.
    4. Se l'hardware e il driver supportano DMA, il framework chiama le funzioni di callback EvtDmaEnablerFill del driver, EvtDmaEnablerEnablerSelfManagedIoStart (se esistenti) per ogni canale DMA creato.
    5. Il framework chiama la funzione di callback EvtChildListScanForChildren del driver (se esistente).
    6. Il framework avvia tutte le code di I/O gestite dal dispositivo.
    7. Se il driver usa I/O autogestito, il framework chiama la funzione di callback EvtDeviceSelfManagedIoInit del driver.

Per altre informazioni sulla sequenza di alimentazione per la funzione KMDF o i driver di filtro, Power-Up Sequence per una funzione o un driver di filtro.