Supporto di dispositivi Multiple-Component con stati di alimentazione funzionale singoli o multipli
[Si applica solo a KMDF]
Un driver KMDF per un dispositivo a più componenti può definire uno o più stati di alimentazione funzionale per ogni componente.
In questo caso, il driver viene registrato direttamente con il framework di risparmio energia (PoFx). Per specificare che WDF non deve essere registrato con PoFx, il driver chiama WdfDeviceAssignS0IdleSettings con il membro IdleTimeoutType della struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS impostata su DriverManagedIdleTimeout. In genere, il driver chiama questo metodo dalla sua funzione EvtDriverDeviceAdd callback.
Successivamente, il driver deve registrarsi con PoFx. A tale scopo, il driver chiama PoFxRegisterDevice e quindi PoFxStartDevicePowerManagement. Il driver deve registrarsi con PoFx una sola volta, quando il dispositivo viene avviato per la prima volta. Un modo per eseguire questa operazione consiste nel chiamare queste routine da una funzione EvtDeviceSelfManagedIoInit fornita da un driver. EvtDeviceSelfManagedIoInit viene chiamato solo la prima volta che viene avviato il dispositivo.
Quando il dispositivo viene rimosso, il driver deve chiamare PoFxUnregisterDevice per annullare la registrazione del dispositivo da PoFx. Per annullare la registrazione una sola volta, è consigliabile chiamare questa routine da una funzione EvtDeviceSelfManagedIoFlush fornita dal driver. EvtDeviceSelfManagedIoFlush viene chiamato solo quando il dispositivo viene rimosso. Annullando la registrazione in EvtDeviceSelfManagedIoFlush, il driver mantiene la registrazione dell'alimentazione durante la sospensione e la transizione di ribilanciamento e non deve mantenere i riferimenti di alimentazione per le richieste di I/O che rimangono in sospeso durante queste transizioni.
Quando il driver chiama PoFxRegisterDevice, riceve un handle di registrazione di alimentazione (POHANDLE) che può usare per interagire direttamente con PoFx, come descritto negli argomenti seguenti:
- Coordinamento delle richieste di I/O con lo stato di alimentazione del componente
- Creazione di report del dispositivo attivato quando il sistema restituisce a S0
- Supporto di Power-Down inattive nei dispositivi Multiple-Component
Inoltre, il driver può chiamare routine di power framework direttamente per inviare richieste di controllo energia e specificare requisiti di latenza, residenza e riattivazione.
Per altre informazioni su PoFx, vedere Panoramica di Power Management Framework.