é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 à faible alimentation pendant qu’il est en cours d’idage.
Syntaxe
typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
IdleCapsInvalid = 0,
IdleCannotWakeFromS0,
IdleCanWakeFromS0,
IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;
Constantes
IdleCapsInvalid Valeur : 0 Pour une utilisation interne uniquement. |
IdleCannotWakeFromS0 L’appareil ne peut pas se réveiller d’un état de faible alimentation alors que le système est dans son état de fonctionnement (S0). |
IdleCanWakeFromS0 L’appareil peut se réveiller à partir d’un état de faible alimentation alors que le système est dans son état de travail (S0). |
IdleUsbSelectiveSuspend L’appareil est connecté à un bus USB et prend en charge suspension sélective USB. Utilisez cette valeur si votre appareil connecté à USB prend en charge à la fois l’idling et le réveil lui-même pendant que l’ordinateur est dans son état de fonctionnement. Si votre périphérique USB prend uniquement en charge l’idling, utilisez IdleCannotWakeFromS0. (Les pilotes pour les périphériques USB ne doivent pas spécifier IdleCanWakeFromS0.) Consultez les exemples de code de la section Exemples suivants. Pour Windows XP, le framework prend en charge la suspension sélective USB uniquement si la structure de USB_CONFIGURATION_DESCRIPTOR de l’appareil indique que l’appareil prend en charge mise en éveil à distance. Pour Windows Vista et les versions ultérieures de Windows, l’infrastructure prend en charge la suspension sélective USB, que l’appareil prenne 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 inactive 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 de 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 {...}
Exigences
Exigence | Valeur |
---|---|
version minimale de KMDF | 1.0 |
version minimale de UMDF | 1.11 |
d’en-tête | wdfdevice.h (include Wdf.h) |