Condividi tramite


Controllo utente del comportamento di inattività e riattivazione del dispositivo in UMDF

Avviso

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2.

Gli esempi di UMDF 1 archiviati sono disponibili nell'aggiornamento degli esempi di driver di Windows 11 versione 22H2 - Maggio 2022.

Per altre informazioni, vedi Introduzione a UMDF.

Se un dispositivo dispone di funzionalità di accensione o riattivazione inattive, è possibile decidere se gli utenti devono essere autorizzati ad abilitare o disabilitare queste funzionalità.

Il driver basato su UMDF può usare il metodo IWDFDevice2::AssignS0IdleSettings per specificare se gli utenti con accesso al Registro di sistema possono abilitare o disabilitare la funzionalità di alimentazione inattiva di un dispositivo.

Il driver può usare il metodo IWDFDevice2::AssignSxWakeSettings per specificare se gli utenti con accesso al Registro di sistema possono abilitare o disabilitare la funzionalità di riattivazione di un dispositivo.

Entrambi questi metodi consentono al driver di abilitare la funzionalità, disabilitare la funzionalità o concedere agli utenti il controllo della funzionalità:

  • Quando un driver chiama il metodo AssignS0IdleSettings , può concedere agli utenti il controllo delle funzionalità inattive di un dispositivo impostando il parametro UserControlOfIdleSettings su IdleAllowUserControl e impostando il parametro Enabled su WdfTrue o WdfUseDefault.

  • Quando un driver chiama il metodo AssignSxWakeSettings , può concedere agli utenti il controllo delle funzionalità di riattivazione di un dispositivo impostando il parametro UserControlOfWakeSettings su WakeAllowUserControl e impostando il parametro Enabled su WdfTrue o WdfUseDefault.

Se il driver consente agli utenti di modificare le impostazioni di inattività e riattivazione, il framework fornisce un'interfaccia utente, sotto forma di una pagina della finestra delle proprietà visualizzata da Gestione dispositivi in modo che gli utenti possano abilitare o disabilitare le funzionalità di inattività e riattivazione. Il framework modifica i valori del Registro di sistema IdleInWorkingState e WakeFromSleepState . I driver e i relativi file di installazione non devono leggere o modificare questi valori.

Se un utente modifica le impostazioni di un dispositivo, il framework aggiorna lo stato di alimentazione del dispositivo in modo che corrisponda alle nuove impostazioni, se necessario. Ad esempio, se l'utente disabilita la funzionalità di risparmio di energia inattiva di un dispositivo mentre il dispositivo è già in stato di bassa potenza perché era inattivo, il framework restituisce il dispositivo allo stato di funzionamento.

Se il driver consente agli utenti di modificare le impostazioni di inattività e riattivazione, il framework abilita queste impostazioni per impostazione predefinita. Alcuni writer di driver potrebbero voler disabilitare inizialmente le impostazioni prima di consentire agli utenti di modificarle.

Pertanto, le versioni 1.9 e successive del framework forniscono due valori del Registro di sistema definable driver, denominati WdfDefaultIdleInWorkingState e WdfDefaultWakeFromSleepState, archiviati nella sottochiave Device Parameters\WDF del dispositivo, sotto la chiave hardware del dispositivo. I valori sono REG_DWORD tipizzati, con "0" che indica che la funzionalità è disabilitata e "1" che indica che la funzionalità è abilitata.

Il file INF del driver può usare una direttiva INF AddReg per creare e impostare i valori del Registro di sistema WdfDefaultIdleInWorkingState e WdfDefaultWakeFromSleepState . Ad esempio, se il driver abilita la funzionalità di risparmio di energia inattiva di un dispositivo, ma se la funzionalità deve essere disabilitata quando il dispositivo è installato, il file INF del driver può impostare WdfDefaultIdleInWorkingState su "0".

Il framework esamina il valore del Registro di sistema WdfDefaultIdleInWorkingState solo se il driver imposta il parametro UserControlOfIdleSettings su IdleAllowUserControl e il parametro Enabled su WdfTrue o WdfUseDefault quando il driver chiama il metodo IWDFDevice2::AssignS0IdleSettings .

Il framework esamina i valori del Registro di sistema WdfDefaultWakeFromSleepState solo se il driver imposta il parametro UserControlOfWakeSettings su IWakeAllowUserControl e il parametro Enabled su WdfTrue o WdfUseDefault quando il driver chiama il metodo IWDFDevice2::AssignSxWakeSettings .