Implementazione timer della classe di dispositivi audio inattività
Il driver di sistema PortCls usa le funzionalità di rilevamento inattive del sistema per implementare un timer di inattività per i client audio. PortCls programmi due valori di timeout e uno stato di alimentazione inattiva desiderato nel timer quando lo inizializza. PortCls monitora gli accessi (ad esempio i/O e gli accessi alle proprietà) del dispositivo e reimposta in modo efficace il conteggio dei timer su ogni accesso. Se il timer si verifica il timeout, il sistema richiede un'IRP di alimentazione per posizionare il dispositivo nello stato di inattività desiderato. Dopo aver inserito il dispositivo nello stato di inattività, PortCls eseguirà il backup del dispositivo in caso di nuova attività di accesso.
PortCls contiene valori predefiniti hardcoded per i timeout inattive e lo stato di alimentazione inattiva. I fornitori di hardware possono eseguire facoltativamente l'override dei valori predefiniti scrivendo i propri valori in chiavi specifiche del driver nel Registro di sistema. In questo modo, i fornitori possono selezionare i valori dei parametri power-inattività più adatti ai propri dispositivi.
I fornitori possono eseguire l'override dei valori predefiniti dei parametri power-idle seguenti:
ConservationIdleTime
Questo parametro specifica l'intervallo di timeout inattiva quando il sistema è in esecuzione in modalità di risparmio energia. Questa è la modalità utilizzata in genere quando il sistema è in esecuzione sulla potenza della batteria. Il valore predefinito per questo parametro è 0, che disabilita il timer di inattività di alimentazione in modalità di conservazione. Il fornitore dell'hardware può impostare il valore usando un file inf come questo.
[MyAudioDevice.AddReg] HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
Il frammento di file INF precedente mostra un valore esadecimale (esadecimale) di "1e" per ConservationIdleTime e questo equivale a un timeout di inattività di 30 secondi.
FLG_ADDREG_BINVALUETYPE
Gli altri parametri vengono usati per controllare la modalità di aggiunta della chiave del Registro di sistema. Ad esempio %REG_BINARY% indica che i dati vengono archiviati come dati "non elaborati". Per altre informazioni, vedere direttiva INF AddReg.
PerformanceIdleTime
Questo parametro specifica l'intervallo di timeout inattiva quando il sistema è in esecuzione in modalità prestazioni. Questa è la modalità utilizzata in genere quando il sistema è in esecuzione sull'alimentazione AC. Il valore predefinito per questo parametro è 0, che disabilita il timer power-idle in modalità prestazioni.
Il fornitore dell'hardware può impostare il valore usando un file inf come questo.
[MyAudioDevice.AddReg] HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
Il valore della chiave specifica l'intervallo di timeout in secondi. In questo esempio il valore 2c.01 sarà 300 secondi o cinque minuti.
IdlePowerState
Questo parametro specifica lo stato di alimentazione in cui il dispositivo verrà inserito se il periodo di timeout inattiva scade. Il valore predefinito per questo parametro è 3, corrispondente allo stato di alimentazione del dispositivo D3, che è lo stato di bassa potenza del dispositivo basato sul dispositivo. Il fornitore dell'hardware può impostare il valore usando un file inf come questo.
[MyAudioDevice.AddReg] HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
Il valore inserito nella chiave deve essere 0, 1, 2 o 3, corrispondente allo stato di alimentazione del dispositivo D0, D1, D2 o D3 rispettivamente.
Le tre chiavi del Registro di sistema power-idle esistono solo se il file INF di installazione del dispositivo li crea. Prima di configurare il timer power-idle, PortCls tenta di recuperare i parametri power-idle specifici del driver dal Registro di sistema. PortCls usa i valori predefiniti al posto di qualsiasi parametro power-idle che non trova nel Registro di sistema. Come illustrato in precedenza, i valori dei parametri power-idle predefiniti disabilitano il timer inattiva.
Per altre informazioni sulla specifica dei parametri ConservationIdleTime, PerformanceIdleTime e IdlePowerState , vedere le definizioni degli ultimi tre parametri di chiamata in PoRegisterDeviceForIdleDetection.
Esempio
Ad esempio, un fornitore di hardware potrebbe voler specificare i parametri power-idle seguenti per un dispositivo audio: ConservationIdleTime = 0x0000001e (30 secondi), PerformanceIdleTime = 0x0000012c (300 secondi) e IdlePowerState = 0x00000003 (stato di alimentazione del dispositivo D3). Per abilitare queste impostazioni, il file di installazione del dispositivo può includere una sezione INF AddReg contenente le direttive seguenti:
[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00