SET_D3COLD_SUPPORT funzione di callback (wdm.h)
La routine di callback SetD3ColdSupport abilita o disabilita le transizioni allo stato di alimentazione del dispositivo D3cold.
Sintassi
SET_D3COLD_SUPPORT SetD3coldSupport;
void SetD3coldSupport(
[in, optional] PVOID Context,
[in] BOOLEAN D3ColdSupport
)
{...}
Parametri
[in, optional] Context
Puntatore a informazioni di contesto specifiche dell'interfaccia. Il chiamante imposta questo parametro sul valore del membro Context della struttura D3COLD_SUPPORT_INTERFACE per l'interfaccia.
[in] D3ColdSupport
Indica se consentire le transizioni da D3hot a D3cold. Impostare su TRUE per abilitare queste transizioni. In caso contrario, impostare su FALSE. Per altre informazioni, vedere Osservazioni.
Valore restituito
nessuno
Osservazioni
Il driver proprietario dei criteri di alimentazione (PPO) per un dispositivo può chiamare questa routine per abilitare o disabilitare le transizioni allo stato secondario D3cold che può verificarsi quando il computer si trova nello stato di alimentazione del sistema S0 (funzionante) e non si prepara a uscire da S0.
Se un dispositivo deve essere in grado di segnalare un evento di riattivazione da qualsiasi stato Dx a basso consumo immesso, il driver per questo dispositivo non deve abilitare le transizioni alla substate D3cold a meno che il dispositivo non possa segnalare un evento di riattivazione da questo sottostato. In caso contrario, dopo aver immesso D3cold, il dispositivo non sarà disponibile fino al riavvio o alla riattivazione del computer da uno stato di sospensione.
Il driver per il dispositivo può chiamare la routine GetIdleWakeInfo per determinare se il dispositivo può segnalare un evento di riattivazione da D3cold.
Se necessario, il driver per un dispositivo può effettuare una serie di chiamate SetD3ColdSupport per abilitare e disabilitare in modo alternativo le transizioni D3cold in risposta a condizioni che cambiano in modo dinamico.
Ad esempio, un dispositivo grafico potrebbe avere un contesto hardware di grandi dimensioni da ripristinare dopo una transizione da D3cold a D0. Il tempo necessario per ripristinare questo contesto può essere o meno accettabile a seconda del set di attività attualmente in esecuzione dall'utente. Inoltre, il tempo di ripristino può variare con questa combinazione di attività. Il driver potrebbe dover abilitare e disabilitare dinamicamente le transizioni a D3cold man mano che cambia la combinazione di attività.
Un dispositivo può immettere lo stato secondario D3cold solo dalla sottostate D3hot. Se il driver chiama SetD3ColdSupport per abilitare le transizioni da D3hot a D3cold, il dispositivo può o meno immettere D3cold dopo che entra D3hot. In risposta a un evento di riattivazione, un dispositivo potrebbe entrare D0 direttamente da D3hot senza passare mai attraverso D3cold.
Quando un dispositivo passa da D3hot a D3cold, probabilmente lo fa perché la fonte di alimentazione che condivide con un certo numero di altri dispositivi è stata disattivata. Qualche tempo dopo che questi dispositivi immettono D3cold, il driver per uno dei dispositivi potrebbe richiedere una transizione a D0. In risposta a questa richiesta, il driver del bus padre o il driver di filtro ACPI attiva l'alimentazione e tutti i dispositivi che condividono la fonte di alimentazione immettono gli stati predefiniti di accensione.
L'unico driver di dispositivo che prevede questa modifica dello stato di alimentazione è il driver che ha richiesto la modifica. I driver per gli altri dispositivi devono ricevere una notifica di questa modifica in modo che possano inizializzare correttamente i dispositivi per funzionare in D0. Solo un driver in grado di ricevere questa notifica deve consentire al dispositivo di immettere D3cold. In caso contrario, il driver non saprà quando il dispositivo entra in D0.
A partire da Windows 8, un driver WDM può registrare il dispositivo con il framework di alimentazione (PoFx) e ricevere una notifica dalla routine DevicePowerRequiredCallback quando il dispositivo entra in D0. Analogamente, un driver KMDF può registrare il dispositivo con PoFx e ricevere una notifica dal callback dell'evento EvtDeviceD0Entry .
Un driver che non registra il dispositivo con PoFx può comunque ricevere una notifica di transizione a D0 se il dispositivo è armato per la riattivazione. Quando i conducenti dell'autobus accendono l'alimentazione del dispositivo, completano la richiesta di IRP_MN_WAIT_WAKE del conducente. In risposta, il driver inizializza il dispositivo in modo che funzioni in D0.
Dopo l'accensione di una fonte di alimentazione condivisa da diversi dispositivi, il dispositivo il cui driver ha richiesto la transizione a D0 potrebbe essere l'unico di questi dispositivi che ha funzionato. È probabile che gli altri dispositivi siano inattive, nel qual caso i driver, dopo qualche tempo, spostano questi dispositivi in D3hot.
Se il driver chiama SetD3ColdSupport per disabilitare le transizioni a D3cold, D0 è l'unico stato di alimentazione del dispositivo che il dispositivo può entrare da D3hot.
Se il driver chiama SetD3ColdSupport per abilitare le transizioni a D3cold, queste transizioni potrebbero essere disabilitate per altri motivi. Il driver può chiamare la routine GetD3ColdCapability per determinare se il dispositivo è in grado di immettere lo stato secondario D3cold. Tuttavia, un driver potrebbe non necessitare di queste informazioni. Se un dispositivo non è in grado di immettere D3cold, le chiamate a SetD3ColdSupport non hanno alcun effetto, ma sono innocue.
La routine SetD3ColdSupport influisce solo sulle transizioni D3hot-to-D3cold che possono verificarsi quando il computer si trova (e non si prepara a uscire) lo stato S0. Questa routine non ha alcun effetto sul caso in cui il computer si prepara a uscire da S0 e immettere uno stato di sistema a basso consumo. Un dispositivo nello stato secondario D3hot potrebbe sempre immettere lo stato secondario D3cold subito prima che il computer entri in uno stato di alimentazione insufficiente del sistema.
Per impostazione predefinita, prima della prima chiamata alla routine SetD3ColdSupport , le transizioni D3hot-to-D3cold sono disabilitate. Per modificare questa impostazione predefinita in modo che le transizioni D3hot-to-D3cold siano abilitate prima della prima chiamata SetD3ColdSupport , il pacchetto driver per il dispositivo può includere le due righe seguenti nella sezione DDInstall.HW del file INF che installa il driver:
Include = machine.inf
Needs = PciD3ColdSupported
Windows 8 è la prima versione di Windows per supportare i dispositivi che possono entrare e uscire dallo stato secondario D3cold mentre il computer rimane nello stato S0. Per altre informazioni, vedere Stati di Low-Power del dispositivo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 8. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h) |
IRQL | PASSIVE_LEVEL |