Benutzersteuerung des Geräte-Leerlauf- und Aktivierungsverhaltens
Wenn ein Gerät über Leerlauf- oder Aktivierungsfunktionen verfügt, können Sie entscheiden, ob Benutzer diese Funktionen aktivieren oder deaktivieren dürfen.
Ihr Treiber kann Mitglieder der WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS-Struktur verwenden, um anzugeben, ob Benutzer mit Registrierungszugriff die Funktion zum Herunterfahren im Leerlauf eines Geräts aktivieren oder deaktivieren können.
Ihr Treiber kann Mitglieder der WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS-Struktur verwenden, um anzugeben, ob Benutzer mit Registrierungszugriff die Aktivierungsfunktion eines Geräts aktivieren oder deaktivieren können.
Beide Strukturen ermöglichen es dem Treiber, die Funktion zu aktivieren, die Funktion zu deaktivieren oder Benutzern die Kontrolle über die Funktion zu geben. Um Benutzern die Kontrolle zu geben, legt der Treiber in der entsprechenden Einstellungsstruktur das Element UserControlOfIdleSettings oder UserControlOfWakeSettings auf IdleAllowUserControl bzw . WakeAllowUserControl und das Enabled-Element auf WdfTrue oder WdfUseDefault fest.
Wenn Ihr Treiber Benutzern das Ändern von Einstellungen für Leerlauf und Aktivierung zulässt, stellt das Framework eine Benutzeroberfläche in Form einer Eigenschaftenblattseite bereit, die Geräte-Manager angezeigt wird, sodass Benutzer die Leerlauf- und Aktivierungsfunktionen aktivieren oder deaktivieren können. (Das Framework ändert die Registrierungswerte IdleInWorkingState und WakeFromSleepState . Treiber und ihre Installationsdateien dürfen diese Werte nicht lesen oder ändern.)
Wenn ein Benutzer die Einstellungen eines Geräts ändert, aktualisiert das Framework den Energiezustand des Geräts, soweit erforderlich, an die neuen Einstellungen. Wenn der Benutzer beispielsweise die Funktion zum Herunterschalten im Leerlauf eines Geräts deaktiviert, während sich das Gerät bereits in einem Energiesparmodus befindet, weil es sich im Leerlauf befand, versetzt das Framework das Gerät in den Betriebszustand zurück.
Wenn Ihr Treiber Benutzern das Ändern von Leerlauf- und Aktivierungseinstellungen zulässt, aktiviert das Framework diese Einstellungen standardmäßig. Einige Treiberautoren möchten die Einstellungen möglicherweise zunächst deaktivieren, bevor Benutzer sie ändern können.
Daher stellt das Framework für Version 1.9 und höhere Versionen von KMDF zwei treiberdefinierbare Registrierungswerte mit den Namen WdfDefaultIdleInWorkingState und WdfDefaultWakeFromSleepState bereit, die im Unterschlüssel Geräteparameter\WDF des Geräts unter dem Hardwareschlüssel des Geräts gespeichert sind. Die Werte sind REG_DWORD typisiert, wobei "0" angibt, dass die Funktion deaktiviert ist, und "1" gibt an, dass die Funktion aktiviert ist.
Die INF-Datei Ihres Treibers kann eine INF AddReg-Direktive verwenden, um die Registrierungswerte WdfDefaultIdleInWorkingState und WdfDefaultWakeFromSleepState zu erstellen und festzulegen. Wenn Ihr Treiber z. B. die Leerlauf-Herunterschaltfunktion eines Geräts aktiviert, die Funktion jedoch bei der Installation des Geräts deaktiviert werden muss, kann die INF-Datei des Treibers WdfDefaultIdleInWorkingState auf "0" festlegen.
Das Framework untersucht die Registrierungswerte WdfDefaultIdleInWorkingState und WdfDefaultWakeFromSleepState nur, wenn der Treiber das Element UserControlOfIdleSettings oder UserControlOfWakeSettings in der entsprechenden Einstellungsstruktur auf IdleAllowUserControl bzw . WakeAllowUserControl und das Enabled-Element auf WdfTrue oder WdfUseDefault festgelegt hat.