Freigeben über


Implementierung des Inaktivitätstimers für Audiogeräteklassen

Der PortCls-Systemtreiber nutzt die Funktionen des Systems zur Erkennung im Leerlauf, um einen Inaktivitätszeitgeber für seine Audioclients zu implementieren. PortCls programmiert beim Initialisieren zwei Timeoutwerte und einen gewünschten Leerlauf-Energiezustand in den Timer. PortCls überwacht alle Zugriffe (z. B. E/A- und Eigenschaftszugriffe) des Geräts und setzt effektiv die Timeranzahl für jeden Zugriff zurück. Wenn der Timer ein Timerout aufweist, fordert das System eine Energie-IRP an, um das Gerät in den gewünschten Leerlaufzustand zu versetzen. Nachdem das Gerät in den Leerlaufzustand versetzt wurde, wird das Gerät von PortCls im Fall einer neuen Zugriffsaktivität wieder mit Strom versorgt.

PortCls enthält hartcodierte Standardwerte für die Leerlauftimeouts und den Energiezustand im Leerlauf. Hardwarehersteller können optional die Standardwerte überschreiben, indem sie ihre eigenen Werte in treiberspezifische Schlüssel in die Systemregistrierung schreiben. Auf diese Weise können Anbieter die Parameterwerte im Leerlauf auswählen, die für ihre Geräte am besten geeignet sind.

Anbieter können die Standardwerte der folgenden Parameter im Leerlauf außer Kraft setzen:

  • ConservationIdleTime

    Dieser Parameter gibt das Leerlauftimeoutintervall an, wenn das System im Energiesparmodus ausgeführt wird. Dies ist der Modus, der in der Regel verwendet wird, wenn das System mit Akkubetrieb ausgeführt wird. Der Standardwert für diesen Parameter ist 0. Dadurch wird der Timer im Leerlauf im Erhaltungsmodus deaktiviert. Der Hardwarehersteller kann den Wert mithilfe einer inf-Datei wie dieser festlegen.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
    

Das vorherige INF-Dateifragment zeigt einen Hexadezimalwert (Hex) von "1e" für die ConservationIdleTime, was einem Leerlauftimeout von 30 Sekunden entspricht.

FLG_ADDREG_BINVALUETYPE

Die anderen Parameter werden verwendet, um zu steuern, wie der Registrierungsschlüssel hinzugefügt wird. Beispielsweise gibt %REG_BINARY% an, dass die Daten als "Rohdaten" gespeichert werden. Weitere Informationen finden Sie unter INF AddReg-Direktive.

  • PerformanceIdleTime

    Dieser Parameter gibt das Leerlauftimeoutintervall an, wenn das System im Leistungsmodus ausgeführt wird. Dies ist der Modus, der normalerweise verwendet wird, wenn das System mit Netzstrom ausgeführt wird. Der Standardwert für diesen Parameter ist 0. Dadurch wird der Timer im Leerlauf im Leistungsmodus deaktiviert.

    Der Hardwarehersteller kann den Wert mithilfe einer inf-Datei wie dieser festlegen.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
    

    Der Wert des Schlüssels gibt das Timeoutintervall in Sekunden an. In diesem Beispiel beträgt der Wert 2c,01 300 Sekunden oder fünf Minuten.

  • IdlePowerState

    Dieser Parameter gibt den Energiezustand an, in dem das Gerät platziert wird, wenn das Leerlaufzeitlimit abläuft. Der Standardwert für diesen Parameter ist 3, was dem Geräteleistungszustand D3 entspricht, der den niedrigsten Gerätestromzustand darstellt. Der Hardwarehersteller kann den Wert mithilfe einer inf-Datei wie dieser festlegen.

    [MyAudioDevice.AddReg]
    HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00
    

    Der im Schlüssel platzierte Wert sollte 0, 1, 2 oder 3 lauten, entsprechend dem Geräteleistungszustand D0, D1, D2 oder D3.

Die drei Registrierungsschlüssel im Leerlauf sind nur vorhanden, wenn sie von der INF-Datei für die Geräteinstallation erstellt werden. Vor dem Konfigurieren des Timers im Leerlauf versucht PortCls, die treiberspezifischen Energiesparparameter aus der Registrierung abzurufen. PortCls verwendet die Standardwerte anstelle aller Parameter im Leerlauf, die in der Registrierung nicht gefunden werden. Wie bereits erläutert, deaktivieren die Standardparameterwerte den Leerlauftimer.

Weitere Informationen zum Angeben der Parameter ConservationIdleTime, PerformanceIdleTime und IdlePowerState finden Sie in den Definitionen der letzten drei Aufrufparameter in PoRegisterDeviceForIdleDetection.

Beispiel

Ein Hardwarehersteller kann beispielsweise die folgenden Parameter im Leerlauf für ein Audiogerät angeben: ConservationIdleTime = 0x0000001e (30 Sekunden), PerformanceIdleTime = 0x0000012c (300 Sekunden) und IdlePowerState = 0x00000003 (Geräteleistungszustand D3). Um diese Einstellungen zu aktivieren, kann die Geräteinstallationsdatei einen INF AddReg-Abschnitt enthalten, der die folgenden Anweisungen enthält:

[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

Weitere Informationen

PoRegisterDeviceForIdleDetection