Funzionalità D3cold di un dispositivo
Prima del driver proprietario del criterio di alimentazione (PPO) per un dispositivo consente al dispositivo di immettere D3cold (quando il computer rimane in S0), il driver deve verificare che il dispositivo sarà reattivo e continuare a funzionare correttamente dopo che il dispositivo entra in D3cold.
Per un dispositivo Plug and Play (PnP), il sistema operativo ottiene in genere informazioni sulle funzionalità D3cold del dispositivo dal driver del bus padre.
Ad esempio, se un dispositivo è collegato a un bus PCI o PCI Express, lo spazio di configurazione PCI del dispositivo contiene un blocco di registrazione power management che indica le funzionalità del dispositivo. I flag di funzionalità in questo blocco specificano gli stati di alimentazione del dispositivo da cui il dispositivo può segnalare un evento di gestione energia o PME (il termine PCI per un evento di riattivazione). Questi stati possono includere D3hot e D3cold. Per altre informazioni sulla gestione delle energia PCI, vedere La specifica dell'interfaccia di Power Management del bus PCI.
Se un dispositivo deve essere in grado di segnalare un evento di riattivazione da qualsiasi stato Dx a bassa potenza immesso, il dispositivo non deve immettere D3cold a meno che il dispositivo, il controller del bus padre e la piattaforma hardware supportino la segnalazione di un evento di riattivazione da D3cold.
Il driver KMDF per un dispositivo chiama il metodo WdfDeviceAssignS0IdleSettings per consentire al dispositivo di inattività nello stato di alimentazione del dispositivo con potenza minima da cui il dispositivo può segnalare un evento di riattivazione. A partire da KMDF versione 1.11, WdfDeviceAssignS0IdleSettings include D3cold nell'intervallo di possibili stati Dx a bassa potenza. Questo metodo consente a un dispositivo di inattività in D3cold solo se il dispositivo, il driver del bus padre e il firmware del sistema ACPI supportano l'attivazione degli eventi di riattivazione da D3cold.
Il driver WDM per un dispositivo deve decidere quale stato Dx a bassa potenza spostare il dispositivo in quando il dispositivo è inattiva. Al contrario, WdfDeviceAssignS0IdleSettings seleziona automaticamente questo stato Dx in modo che il driver non sia necessario. Se il dispositivo deve essere in grado di segnalare un evento di riattivazione da qualsiasi stato Dx a bassa potenza immesso, il driver può chiamare la routine GetIdleWakeInfo per determinare lo stato di alimentazione del dispositivo più basso da cui il dispositivo può segnalare un evento di riattivazione. Per ottenere queste informazioni, GetIdleWakeInfo esegue una query sul driver del bus sottostante e sul firmware del sistema ACPI. In base alle informazioni di GetIdleWakeInfo, il driver può chiamare la routine SetD3ColdSupport per abilitare o disabilitare le transizioni del dispositivo a D3cold.
Un dispositivo potrebbe non richiedere la possibilità di segnalare un evento di riattivazione da D3cold. Il dispositivo potrebbe essere invece necessario per eseguire la transizione da D3cold a D0 solo in risposta alle azioni avviate dal software. Ad esempio, il driver potrebbe dover riattivare il dispositivo se il driver riceve una richiesta di I/O per il dispositivo. Con poche eccezioni, il driver per tale dispositivo può consentire al dispositivo di immettere D3cold. Un'eccezione possibile è un dispositivo che richiede una grande quantità di tempo per eseguire una transizione da D3cold a D0. Ad esempio, un dispositivo di visualizzazione potrebbe contenere una grande quantità di memoria che deve essere salvata prima che il dispositivo entri in D3cold e ripristinato dopo l'uscita dal dispositivo D3cold.
Per altre informazioni sul supporto ACPI per D3cold, vedere Requisiti del firmware per D3cold.