Supporto di PnP e Power Management nei driver di funzione

I driver di funzione controllano l'operazione di un dispositivo e quindi accedono all'hardware del dispositivo. Questi driver devono supportare operazioni di PnP e power management e in genere registrare diverse funzioni di callback eventi quando creano oggetti dispositivo.

In genere, una funzione evtDriverDeviceAggiungi funzione di callback eventi chiama WdfDeviceInitSetPnpPowerEventCallbacks per registrare le seguenti funzioni di callback:

  • EvtDevicePrepareHardware, che fornisce le risorse assegnate dal sistema del dispositivo al driver. Il driver può eseguire operazioni, ad esempio il mapping della memoria relativa al bus del dispositivo nello spazio indirizzi virtuale del processore, che rendono l'hardware accessibile al driver.

  • EvtDeviceD0Entry, che esegue operazioni, ad esempio il caricamento del firmware, necessarie ogni volta che il dispositivo del driver entra nello stato di lavoro (D0).

  • EvtDeviceD0Exit, che esegue operazioni necessarie ogni volta che il dispositivo del driver lascia lo stato di lavoro (D0) e entra in uno stato di bassa potenza.

  • EvtDeviceReleaseHardware, che rilascia tutte le risorse di sistema allocate da EvtDevicePrepareHardware .

Come tutte le funzioni di callback definite dal framework, quelle nell'elenco precedente sono facoltative. Devi fornire loro solo se il tuo driver li necessita.

I driver di funzione possono chiamare WdfDeviceSetPnpCapabilities e WdfDeviceSetPowerCapabilities per segnalare le funzionalità PnP e power management di un dispositivo al sistema operativo.

In genere, si useranno le code di I/O gestite dal framework per la maggior parte delle richieste di I/O del framework. Se una coda di I/O è gestita dall'alimentazione, il framework recapita le richieste al driver solo se il dispositivo si trova nello stato funzionante (D0). Per altre informazioni sulle code di I/O gestite dall'alimentazione, vedere Power Management for I/O Queues(Gestione energia per le code di I/O).

In genere, il driver di funzione del dispositivo è il proprietario del criterio di alimentazione per lo stack di driver. Il proprietario di power policy determina lo stato di alimentazione del dispositivo appropriato per un dispositivo e invia richieste allo stack di driver del dispositivo ogni volta che lo stato di alimentazione del dispositivo deve cambiare. Per i driver basati su framework, il framework gestisce questa responsabilità, quindi non è necessario fornire codice nel driver per richiedere modifiche nello stato di alimentazione di un dispositivo.

Il proprietario dei criteri di alimentazione ha due responsabilità aggiuntive: controlla la capacità di un dispositivo di immettere uno stato di bassa potenza quando è inattiva e il sistema rimane nel suo stato di lavoro (S0) e controlla la capacità del dispositivo di generare un segnale di riattivazione quando rileva un evento esterno da uno stato a bassa potenza. Se il dispositivo ha funzionalità di inattività o riattivazione, il driver di funzione può fornire funzioni di callback aggiuntive. Per altre informazioni sulle responsabilità del proprietario dei criteri di alimentazione, vedere Proprietà di Power Policy.