Condividi tramite


WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS struttura (wudfddi_types.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta 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. Per altre informazioni, vedere Introduzione con UMDF.]

La struttura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS contiene informazioni fornite dal driver usate dal framework quando un dispositivo è inattiva e il sistema si trova nello stato di lavoro del sistema (S0).

Sintassi

typedef struct _WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
  ULONG                                 Size;
  WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
  DEVICE_POWER_STATE                    DxState;
  ULONG                                 IdleTimeout;
  WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
  WDF_TRI_STATE                         Enabled;
  WDF_TRI_STATE                         PowerUpIdleDeviceOnSystemWake;
  WDF_TRI_STATE                         ExcludeD3Cold;
} WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;

Members

Size

Dimensione, in byte, della struttura.

IdleCaps

Enumeratore WDF_POWER_POLICY_S0_IDLE_CAPABILITIES tipizzato che identifica la capacità del dispositivo di riattivarsi dopo essere stato impostato su uno stato a bassa potenza, mentre il sistema rimane nello stato di lavoro (S0).

DxState

Enumeratore DEVICE_POWER_STATE tipizzato che identifica lo stato di alimentazione del dispositivo basso immesso dal dispositivo dopo il termine del periodo di timeout inattiva. DEVICE_POWER_STATE valori sono definiti in wdm.h.

IdleTimeout

La quantità di tempo, in millisecondi, che il dispositivo rimarrà inattiva prima che il framework lo inserisca nello stato di bassa potenza fornito da DxState. Per usare il valore di timeout di inattività predefinito del framework, specificare IdleTimeoutDefaultValue. Per altre informazioni su quando il framework considera il dispositivo inattiva, vedere Supporto dell'idle Power-Down nei driver basati su UMDF.

UserControlOfIdleSettings

Enumeratore WDF_POWER_POLICY_S0_IDLE_USER_CONTROL tipizzato che indica se gli utenti hanno la possibilità di modificare le impostazioni inattive del dispositivo.

Enabled

Enumeratore WDF_TRI_STATE tipizzato che indica se il dispositivo verrà spento se rimane inattivo e mentre la potenza del sistema è in corrispondenza di S0. Questo membro può avere uno dei valori seguenti:

WdfTrue : l'alimentazione è abilitata.

WdfFalse : l'alimentazione inattiva è disabilitata.

WdfUseDefault : il risparmio di energia è inizialmente abilitato per impostazione predefinita; ma se il membro UserControlOfIdleSettings è impostato su IdleAllowUserControl, l'impostazione dell'utente o il file INF dell'utente esegue l'override del valore iniziale.

Se l'alimentazione è abilitata, il dispositivo ha una funzionalità di riattivazione e il valore di timeout inattivo scade, il framework chiama il metodo IPowerPolicyCallbackWakeFromS0::OnArmWakeFromS0 prima che il dispositivo entri in uno stato di bassa potenza.

PowerUpIdleDeviceOnSystemWake

Enumeratore WDF_TRI_STATE tipizzato che indica se il dispositivo restituirà lo stato di lavoro (D0) quando il sistema torna allo stato di lavoro (S0). Questo membro è valido solo se il driver imposta il membro IdleCaps su IdleCannotWakeFromS0. Il membro PowerUpIdleDeviceOnSystemWake può avere uno dei valori seguenti:

WdfTrue : se sia il dispositivo che il sistema si trovano in uno stato di bassa potenza, il dispositivo restituisce lo stato di funzionamento quando il sistema restituisce lo stato di lavoro.

WdfFalse : se sia il dispositivo che il sistema si trovano in uno stato di bassa potenza, il dispositivo rimane nello stato di bassa potenza quando il sistema torna allo stato di funzionamento.

WdfUseDefault : valore predefinito usato dal framework se il driver non imposta un valore diverso. Questo valore ha lo stesso significato di WdfFalse.

Se il membro PowerUpIdleDeviceOnSystemWake è impostato su WdfFalse o WdfUseDefault, il dispositivo restituisce lo stato di lavoro solo quando il software accede al dispositivo, ad esempio quando un'applicazione invia una richiesta di I/O al dispositivo. Per altre informazioni, vedere Un dispositivo restituisce lo stato di lavoro.

ExcludeD3Cold

Enumeratore WDF_TRI_STATE tipizzato che indica se il framework può inserire il dispositivo nello stato di alimentazione D3cold quando scade il periodo di timeout inattiva. Il membro ExcludeD3Cold può avere uno dei valori seguenti:

WdfTrue : il framework sposta un dispositivo in uno stato D di bassa potenza quando scade il periodo di timeout inattiva. Se tale stato D è D3, il dispositivo verrà spostato in D3hot. Se ExcludeD3Cold è impostato su WdfTrue, non sarà consentita alcuna ulteriore transizione da D3hot a D3cold.

WdfFalse : il dispositivo può immettere lo stato di alimentazione D3cold quando il periodo di timeout inattiva scade, se vengono soddisfatti tutti i criteri seguenti:

  • Il membro DxState di questa struttura specifica PowerDeviceD3 o PowerDeviceMaximum.
  • Il firmware ACPI indica che il dispositivo supporta lo stato di alimentazione D3cold.
  • Se il driver specificato IdleCanWakeFromS0 o IdleUsbSelectiveSuspend nel membro IdleCaps di questa struttura, il dispositivo può rispondere a un evento di riattivazione esterno durante lo stato di alimentazione D3cold. In caso contrario, questo requisito non si applica.
WdfUseDefault : il framework esamina DDInstall. Sezione HW del file INF del driver. Se le righe seguenti sono presenti, questo valore ha lo stesso significato di WdfFalse:
Include = machine.inf
Needs = PciD3ColdSupported
In caso contrario, questo valore ha lo stesso significato di WdfTrue.

Il membro ExcludeD3Cold è disponibile a partire dalla versione 1.11 di UMDF e viene ignorato nei sistemi operativi precedenti alla Windows 8. Vedere altre informazioni nelle osservazioni.

Commenti

La struttura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS viene usata come input per IWDFDevice3::AssignS0IdleSettingsEx.

La prima volta che un driver chiama IWDFDevice3::AssignS0IdleSettingsEx, si verificano le azioni seguenti:

  • Il framework archivia i valori di tutti i membri della struttura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
  • Se il membro UserControlOfIdleSettings è impostato su IdleAllowUserControl e se il membro Abilitato è impostato su WdfUseDefault, il framework legge il Registro di sistema per scoprire se l'utente ha abilitato l'alimentazione del dispositivo quando è inattivo.
Durante le chiamate successive a IWDFDevice3::AssignS0IdleSettingsEx, il framework archivia solo i valori dei membri DxState, IdleTimeout e Enabled . Inoltre, il framework archivia il valore del membro IdleCaps soggetto alle regole seguenti:
  • Se il driver ha mai specificato IdleCanWakeFromS0 per il valore del parametro IdleCaps in una chiamata precedente a AssignS0IdleSettingsEx, non può successivamente modificare tale valore in IdleUsbSelectiveSuspend.
  • Se il driver ha mai specificato IdleUsbSelectiveSuspend per il valore del parametro IdleCaps in una chiamata precedente a AssignS0IdleSettingsEx, non può successivamente modificare tale valore in IdleCanWakeFromS0.

Le regole seguenti si applicano al valore specificato per il membro DxState :

  • Il valore non può essere PowerDeviceD0.
  • Per i dispositivi USB, il valore non può essere PowerDeviceD0 o PowerDeviceD3.
  • Se si specifica DevicePowerMaximum, il framework usa il valore fornito dal driver per il bus del dispositivo nel membro DeviceWake della relativa struttura WDF_DEVICE_POWER_CAPABILITIES .
  • Se il valore del membro IdleCaps è IdleCanWakeFromS0, non è possibile specificare uno stato di alimentazione del dispositivo inferiore allo stato di alimentazione del dispositivo nel membro DeviceWake della struttura WDF_DEVICE_POWER_CAPABILITIES del driver del bus. In altre parole, se il valore deviceWake del driver del bus è PowerDeviceD2, il valore DxState del driver di funzione non può essere PowerDeviceD3.
Nei sistemi operativi precedenti alla Windows 8, lo stato di alimentazione D3 indica che il dispositivo è in uno stato di bassa potenza, ma che alcune potenza per il bus sono ancora mantenute. A partire da Windows 8, l'ex stato di alimentazione D3 è chiamato D3hot e è disponibile un nuovo stato di alimentazione (D3cold). Un dispositivo può immettere lo stato D3cold mentre il sistema si trova nello stato di lavoro (S0) o in uno stato a bassa potenza. Quando un dispositivo si trova nello stato di alimentazione D3cold, il bus è inattivo e il dispositivo deve attivare il proprio segnale di riattivazione quando un'azione esterna (ad esempio la connessione in un cavo di rete) causa un evento hardware.

Un dispositivo che supporta il risparmio di energia inattivo può usare il membro ExcludeD3Cold di questa struttura per specificare se lo stato di alimentazione D3cold deve essere una scelta consentita per lo stato di alimentazione basso del dispositivo immesso dopo il termine del timeout inattivo.

Per informazioni sulle voci del Registro di sistema che controllano le funzionalità inattive di un dispositivo, vedere Controllo utente dell'inattività del dispositivo e comportamento di riattivazione in UMDF.

Per inizializzare la struttura WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , il driver deve chiamare WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT.

Requisiti

Requisito Valore
Versione UMDF minima 1.11
Intestazione wudfddi_types.h

Vedi anche

IWDFDevice3::AssignS0IdleSettingsEx

WUDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT