Condividi tramite


struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS (wdfdevice.h)

[Si applica a KMDF e UMDF]

La struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS contiene informazioni fornite dal driver sulla capacità di un dispositivo di riattivarsi e sul sistema, quando entrambi si trovano in uno stato a basso consumo.

Sintassi

typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS {
  ULONG                                 Size;
  DEVICE_POWER_STATE                    DxState;
  WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings;
  WDF_TRI_STATE                         Enabled;
  BOOLEAN                               ArmForWakeIfChildrenAreArmedForWake;
  BOOLEAN                               IndicateChildWakeOnParentWake;
} WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS;

Members

Size

Dimensione, in byte, della struttura.

DxState

Enumeratore tipizzato DEVICE_POWER_STATE che identifica lo stato di alimentazione del dispositivo basso che il dispositivo immette quando lo stato di alimentazione del sistema scende a uno stato di bassa potenza riattivabile. Il valore di DxState non può essere PowerDeviceD0. DEVICE_POWER_STATE valori sono definiti in wdm.h.

UserControlOfWakeSettings

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

Enabled

Enumeratore tipizzato WDF_TRI_STATE che indica se il dispositivo può riattivare il sistema (ovvero ripristinare il sistema in S0) quando il sistema è in uno stato a basso consumo. Questo membro può avere uno dei valori seguenti:

WdfTrue : riattivare il sistema è abilitato.

WdfFalse : riattivare il sistema è disabilitato.

WdfUseDefault - Svegliare inizialmente il sistema è abilitato per impostazione predefinita; ma se il membro UserControlOfWakeSettings è impostato su WakeAllowUserControl, l'impostazione dell'utente o il file INF del driver esegue l'override del valore iniziale.

Se il sistema viene attivato e il sistema sta per entrare in uno stato di bassa potenza, il framework chiama la funzione di callback EvtDeviceArmWakeFromSx o EvtDeviceArmWakeFromSxWithReason prima che il dispositivo entri in uno stato a basso consumo.

ArmForWakeIfChildrenAreArmedForWake

Valore booleano che, se impostato su TRUE, indica che la capacità di un dispositivo padre di riattivarsi e il sistema deve essere abilitato quando questa capacità è abilitata per i dispositivi figlio del dispositivo. Per ulteriori informazioni, vedere la sezione Osservazioni successiva. Questo membro è disponibile nella versione 1.7 e successive di KMDF.

IndicateChildWakeOnParentWake

Valore booleano che, se impostato su TRUE, indica che il framework fornirà lo stato di riattivazione ai dispositivi figlio se un dispositivo padre rileva un segnale di riattivazione. Per ulteriori informazioni, vedere la sezione Osservazioni successiva. Questo membro è disponibile nella versione 1.7 e successive di KMDF.

Commenti

La struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS viene usata come input per WdfDeviceAssignSxWakeSettings.

Per inizializzare la struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS , il driver deve chiamare WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT.

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

  • Il framework archivia i valori di tutti i membri della struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS .
  • Se il membro UserControlOfWakeSettings è impostato su WakeAllowUserControl e se il membro Enabled è impostato su WdfUseDefault, il framework legge il Registro di sistema per scoprire se l'utente ha abilitato la riattivazione del sistema.
Durante le chiamate successive a WdfDeviceAssignSxWakeSettings, il framework non archivia il valore del membro UserControlOfWakeSettings . In altre parole, il framework esegue i passaggi seguenti la prima volta che il driver chiama WdfDeviceAssignSxWakeSettings ma non durante le chiamate successive:
  • Archivia il valore del membro UserControlOfWakeSettings .
  • Cerca un'impostazione utente nel Registro di sistema, se il valore del membro Enabled è WdfUseDefault.
Le regole seguenti si applicano al valore specificato per il membro DxState :
  • Il valore non può essere PowerDeviceD0.
  • Se si specifica PowerDeviceMaximum, il framework usa il valore fornito dal driver per il bus del dispositivo nel membro DeviceWake della relativa struttura WDF_DEVICE_POWER_CAPABILITIES .
  • Non è possibile specificare uno stato di alimentazione del dispositivo inferiore allo stato di alimentazione del dispositivo nel membro DeviceWake della struttura di 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.
Per informazioni sulle voci del Registro di sistema che controllano le funzionalità di riattivazione di un dispositivo, vedere Controllo utente del comportamento di inattività e riattivazione del dispositivo.

Se il dispositivo descritto dalla struttura WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS è un dispositivo padre, il driver per il dispositivo padre può usare i membri ArmForWakeIfChildrenAreArmedForWake e IndicateChildWakeOnParentWake come indicato di seguito:

  • Se il driver imposta il membro ArmForWakeIfChildrenAreArmedForWakesu TRUE, il framework chiama la funzione di callback EvtDeviceArmWakeFromSx o EvtDeviceArmWakeFromSxWithReason quando la capacità di riattivazione di un dispositivo figlio è abilitata, anche se la capacità di riattivazione del dispositivo padre non è abilitata.

    Per ridurre il consumo di energia, potrebbe non essere necessario abilitare la capacità di riattivazione del dispositivo, a meno che un dispositivo figlio che supporti anche una riattivazione sia collegato. Se il driver imposta il membro ArmForWakeIfChildrenAreArmedForWake su TRUE, i valori del membro Enabled hanno i significati seguenti:

    • Se Enabled è WdfFalse, il framework abilita la capacità di riattivazione del driver solo se è abilitata la capacità di riattivazione di un dispositivo figlio.
    • Se Enabled è WdfTrue, il framework abilita sempre la capacità di riattivazione del driver, indipendentemente dal fatto che il dispositivo disponga o meno di dispositivi figlio abilitati per la riattivazione.
    • Se Enabled è WdfUseDefault e UserControlOfWakeSettings è WakeAllowUserControl, gli utenti possono controllare se il dispositivo è sempre abilitato alla riattivazione o se è abilitato solo quando il dispositivo dispone di dispositivi figlio abilitati per la riattivazione.
  • Se il driver imposta il membro IndicateChildWakeOnParentWake su TRUE, il framework chiama la funzione di callback EvtDeviceWakeFromSxTriggered nel driver del dispositivo padre e nel driver per ogni dispositivo figlio abilitato per la riattivazione. Se il driver imposta questo membro su FALSE, il framework chiama la funzione di callback EvtDeviceWakeFromSxTriggered solo nel driver del dispositivo padre. Il driver deve impostare IndicateChildWakeOnParentWake su TRUE se i driver per i figli del dispositivo devono esaminare l'hardware per determinare il motivo per cui il sistema è stato risvegliato.
Per altre informazioni su come supportare la capacità di riattivazione di un dispositivo, vedere Supporto della riattivazione del sistema.

Requisiti

Requisito Valore
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfdevice.h (include Wdf.h)

Vedi anche

EvtDeviceArmWakeFromSx

EvtDeviceArmWakeFromSxWithReason

EvtDeviceWakeFromSxTriggered

WDF_DEVICE_POWER_CAPABILITIES

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT

WDF_POWER_POLICY_SX_WAKE_USER_CONTROL

WdfDeviceAssignSxWakeSettings

WdfDeviceIndicateWakeStatus