Condividi tramite


Abilitazione delle transizioni a D3cold

Tutte le versioni di Windows consentono a un dispositivo di essere in D3cold mentre il computer è in sospensione (in uno degli stati di basso consumo di sistema, da S1 a S4). Prima che il computer esce da S0, i driver delle funzioni, i driver degli autobus e i driver di filtro interagiscono per spostare il dispositivo in D3hot. Quando il computer entra nello stato Sx a basso consumo, questa transizione ha l'effetto collaterale di spostare il dispositivo da D3hot a D3cold.

A partire da Windows 8, un dispositivo può entrare e uscire da D3cold mentre il computer rimane in S0. Il driver proprietario dei criteri di alimentazione (PPO) per un dispositivo può abilitare e disabilitare queste transizioni a D3cold. Un driver non deve abilitare il dispositivo per l'immissione di D3cold a meno che il dispositivo non possa, se necessario, riattivarsi da D3cold e quindi riprendere l'operazione normale dopo la transizione a D0.

Quando un dispositivo entra in D3, inizialmente entra nello stato secondario D3hot di D3. Da D3hot, il dispositivo può immettere D0 o D3cold. In risposta a un evento di riattivazione o a una richiesta di I/O, il dispositivo entra D0 da D3hot. In caso contrario, il dispositivo potrebbe rimanere in D3hot o potrebbe passare da D3hot a D3cold. Per altre informazioni su queste transizioni, vedere diagramma dello stato di alimentazione del dispositivo in Stati di alimentazione dei dispositivi.

Il driver non avvia la transizione del dispositivo da D3hot a D3cold. Questa transizione si verifica invece quando tutti gli altri dispositivi che condividono una fonte di alimentazione comune con questo dispositivo sono in D3hot e sono pronti per entrare in D3cold. Quando l'ultimo di questi dispositivi entra D3hot, i driver del bus sottostante e il firmware di sistema rimuovono la fonte di alimentazione e i dispositivi entrano D3cold all'unisono.

Il driver PPO per un dispositivo indica al sistema operativo se abilitare la transizione del dispositivo da D3hot a D3cold. Il driver può fornire queste informazioni nel file INF che installa il dispositivo oppure il driver può chiamare la routine SetD3ColdSupport in fase di esecuzione per abilitare o disabilitare dinamicamente le transizioni del dispositivo a D3cold. Per altre informazioni, vedere Uso dell'interfaccia driver GUID_D3COLD_SUPPORT_INTERFACE.

Abilitando un dispositivo per l'immissione di D3cold, un driver garantisce il comportamento seguente:

  • Il dispositivo può tollerare una transizione da D3hot a D3cold quando il computer deve rimanere in S0.
  • Il dispositivo funzionerà correttamente quando torna a D0 da D3cold.

Un dispositivo che non soddisfa uno dei requisiti potrebbe, dopo aver immesso D3cold, non essere disponibile fino a quando il computer non viene riavviato o entra in stato di sospensione. Se il dispositivo deve essere in grado di segnalare un evento di riattivazione da qualsiasi stato Dx a basso consumo immesso, l'immissione in D3cold non deve essere abilitata a meno che il driver non sia certo che il segnale di riattivazione del dispositivo funzionerà in D3cold.

L'inserimento di un dispositivo in D3cold non significa necessariamente che tutte le fonti di alimentazione per il dispositivo siano state rimosse; significa solo che le fonti di alimentazione che consentono la comunicazione con il dispositivo attraverso il bus sono sparite. Il dispositivo potrebbe comunque essere in grado di disegnare una potenza sufficiente per segnalare un evento di riattivazione al processore. Ad esempio, una scheda di interfaccia di rete Ethernet la cui fonte di alimentazione principale viene rimossa potrebbe trarre energia dal cavo Ethernet.

Poiché D3cold è uno stato in cui il bus non può essere usato per comunicare con il dispositivo, un driver non può inserire direttamente il dispositivo in D3cold. Al contrario, il driver chiama prima la routine PoRequestPowerIrp per richiedere un IRP di alimentazione D3 (una richiesta di IRP_MN_SET_POWER con stato di destinazione = PowerDeviceD3) per spostare il dispositivo da D0 a D3hot. Dopo aver immesso D3hot, il dispositivo può o meno passare da D3hot a D3cold. Il dispositivo entra in D3cold solo quando viene rimossa l'alimentazione del bus, che si verifica se il driver del bus padre spegne l'autobus o se il firmware di sistema disattiva l'alimentazione a una sezione della piattaforma hardware.