enumeración WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.h)
[Se aplica a KMDF y UMDF]
La enumeración de WDF_POWER_POLICY_S0_IDLE_CAPABILITIES identifica las funcionalidades que un dispositivo puede admitir cuando entra en un estado de baja potencia mientras se está quedando inactivo.
Syntax
typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
IdleCapsInvalid = 0,
IdleCannotWakeFromS0,
IdleCanWakeFromS0,
IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;
Constantes
IdleCapsInvalid Valor: 0 Solo para uso interno. |
IdleCannotWakeFromS0 El dispositivo no se puede reactivar desde un estado de bajo consumo mientras el sistema está en estado de funcionamiento (S0). |
IdleCanWakeFromS0 El dispositivo se puede reactivar desde un estado de bajo consumo mientras el sistema está en su estado de funcionamiento (S0). |
IdleUsbSelectiveSuspend El dispositivo está conectado a un bus USB y admite la suspensión selectiva USB. Use este valor si el dispositivo conectado a USB admite la identificación y la reactivación mientras el equipo está en estado de funcionamiento. Si el dispositivo USB solo admite el idling, use IdleCannotWakeFromS0. (Los controladores para dispositivos USB no deben especificar IdleCanWakeFromS0). Consulte los ejemplos de código en la sección Ejemplos siguientes. Para Windows XP, el marco admite la suspensión selectiva usb solo si la estructura de USB_CONFIGURATION_DESCRIPTOR del dispositivo muestra que el dispositivo admite la reactivación remota. En el caso de Windows Vista y versiones posteriores de Windows, el marco admite la suspensión selectiva usb si el dispositivo admite o no la reactivación remota. |
Comentarios
La enumeración WDF_POWER_POLICY_S0_IDLE_CAPABILITIES se usa en la estructura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
Ejemplos
En los ejemplos de código siguientes se muestra cómo habilitar la compatibilidad inactiva con un dispositivo USB. En cada caso, el STATUS_POWER_STATE_INVALID valor devuelto significa que el controlador de autobús ha informado de que el dispositivo no se puede reactivar.
Ejemplo de 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 {...}
Ejemplo 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 {...}
Requisitos
Requisito | Value |
---|---|
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 1.11 |
Encabezado | wdfdevice.h (incluya Wdf.h) |