Partager via


énumération WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.h)

[S’applique à KMDF et UMDF]

L’énumération WDF_POWER_POLICY_S0_IDLE_CAPABILITIES identifie les fonctionnalités qu’un appareil peut prendre en charge lorsqu’il entre dans un état de faible consommation pendant qu’il est en marche marche.

Syntax

typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
  IdleCapsInvalid = 0,
  IdleCannotWakeFromS0,
  IdleCanWakeFromS0,
  IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;

Constantes

 
IdleCapsInvalid
Valeur : 0
À usage interne uniquement.
IdleCannotWakeFromS0
L’appareil ne peut pas se réveiller d’un état de faible consommation lorsque le système est dans son état de fonctionnement (S0).
IdleCanWakeFromS0
L’appareil peut se réveiller d’un état de faible consommation lorsque le système est dans son état de fonctionnement (S0).
IdleUsbSelectiveSuspend
L’appareil est connecté à un bus USB et prend en charge la suspension sélective USB. Utilisez cette valeur si votre appareil connecté à USB prend en charge à la fois la marche au travail et la veille pendant que l’ordinateur est dans son état de fonctionnement. Si votre périphérique USB prend uniquement en charge la marche au ralenti, utilisez IdleCannotWakeFromS0. (Les pilotes pour les périphériques USB ne doivent pas spécifier IdleCanWakeFromS0.) Consultez les exemples de code dans la section Exemples suivante.

Pour Windows XP, l’infrastructure prend en charge la suspension sélective USB uniquement si la structure USB_CONFIGURATION_DESCRIPTOR de l’appareil indique que l’appareil prend en charge la mise en éveil à distance. Pour Windows Vista et les versions ultérieures de Windows, l’infrastructure prend en charge l’interruption sélective USB, que l’appareil prenne ou non en charge la mise en éveil à distance.

Remarques

L’énumération WDF_POWER_POLICY_S0_IDLE_CAPABILITIES est utilisée dans la structure WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS.

Exemples

Les exemples de code suivants montrent comment activer la prise en charge inactif d’un périphérique USB. Dans chaque cas, la valeur de retour STATUS_POWER_STATE_INVALID signifie que le pilote de bus a signalé que l’appareil ne peut pas se réveiller lui-même.

Exemple KMDF

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
                                           IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
                                       &idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    idleSettings.IdleCaps = IdleCannotWakeFromS0;
    status = WdfDeviceAssignS0IdleSettings(device,
                                           &IdleSettings);
    if (!NT_SUCCESS(status) {...}
 }
else {...}

Exemple UMDF

hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
                                        PowerDeviceD3,
                                        IDLEWAKE_TIMEOUT_MSEC,
                                        IdleAllowUserControl,
                                        WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
                                         PowerDeviceD3,
                                         IDLEWAKE_TIMEOUT_MSEC,
                                         IdleAllowUserControl,
                                         WdfTrue);
    if (!SUCCEEDED(hr)) {...}
}
else {...}

Configuration requise

Condition requise Valeur
Version KMDF minimale 1.0
Version UMDF minimale 1.11
En-tête wdfdevice.h (include Wdf.h)

Voir aussi

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS