Consenso esplicito per il timeout di inattività immediato
In questo argomento viene illustrato il valore del Registro di sistema ImmediateIdle che un driver di Windows può usare per acconsentire esplicitamente a uno stato di spegnimento immediato, quando l'alimentazione non è più necessaria.
Oltre alle impostazioni di risparmio energia predefinite descritte in Impostazioni di risparmio energia del Registro di sistema PortCls, Windows 8 ha introdotto un valore del Registro di sistema ImmediateIdle che si trova anche nella chiave del Registro di sistema di PowerSettings per il driver associato.
Questo file inf mostra come impostare ImmediateIdle.
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x00, 0x00, 0x00, 0x00
ImmediateIdle ha un tipo di dati di REG_DWORD e il valore predefinito è "0" che equivale a FALSE. Nel frammento di sintassi precedente, il valore esadecimale "0" indica che il dispositivo non verrà immediatamente spento quando l'alimentazione non è più necessaria.
Per consentire al driver di acconsentire esplicitamente a uno stato di spegnimento immediato, quando l'alimentazione non è più necessaria, è necessario usare la sintassi seguente:
[MyAudioDevice.AddReg]
HKR,PowerSettings,ImmediateIdle,%REG_BINARY%, 0x01, 0x00, 0x00, 0x00
Nell'esempio precedente, il valore esadecimale "1" equivale a TRUE e significa che il dispositivo si spegne immediatamente quando l'alimentazione non è più necessaria.
Quando il framework di risparmio energia di runtime richiama un callback per il metodo DevicePowerRequired , a indicare che il dispositivo non richiede più alimentazione, PortCls richiede quindi un IRP di alimentazione del dispositivo per lo stato D indicato dal valore del Registro di sistema IdlePowerState . Se non viene specificato alcuno stato, viene usato il valore predefinito D3.
Se un driver opta per il risparmio di energia inattivo immediato, deve assicurarsi che il plug-in del motore di alimentazione (PEP) per il sistema contenga la logica necessaria per impedire inutilmente e continuamente accendere l'adattatore verso l'alto e verso il basso per i provider di integrazione ricevuti in successione immediata. È necessario applicare alcune regole di residenza per mantenere acceso il dispositivo per batch di richieste di I/O.
Inoltre, l'interfaccia introdotta in Windows 7 che consente ai driver di abilitare o disabilitare il risparmio energia inattiva a livello di codice continua a essere rispettata quando il driver non ha scelto di attivare immediatamente il risparmio energia inattiva. Questa operazione viene eseguita tramite il metodo IPortClsPower::SetIdlePowerManagement ed esegue l'override delle impostazioni nel Registro di sistema, ad eccezione del caso in cui ImmediateIdle è impostato su 1 (TRUE).