é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) |