Compartir a través de


Método IWDFDevice2::AssignSxWakeSettings (wudfddi.h)

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción a UMDF.]

El método AssignSxWakeSettings proporciona información proporcionada por el controlador sobre la capacidad de un dispositivo para desencadenar una señal de reactivación mientras tanto el dispositivo como el sistema están en estado de bajo consumo.

Sintaxis

HRESULT AssignSxWakeSettings(
  [in] DEVICE_POWER_STATE                    DxState,
  [in] WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings,
  [in] WDF_TRI_STATE                         Enabled
);

Parámetros

[in] DxState

Enumerador con tipo DEVICE_POWER_STATEque identifica el estado de energía de dispositivo bajo que el dispositivo entrará cuando el estado de energía del sistema caiga en un estado de baja potencia reactivable. El valor de dxState no se puede powerDeviceD0. DEVICE_POWER_STATE valores se definen en wdm.h.

[in] UserControlOfWakeSettings

Enumerador con tipo WDF_POWER_POLICY_SX_WAKE_USER_CONTROLque indica si los usuarios tienen la capacidad de modificar la configuración de reactivación del dispositivo.

[in] Enabled

Enumerador con tipo WDF_TRI_STATEque indica si el dispositivo puede reactivar el sistema (es decir, restaurar el sistema a S0) cuando el sistema está en estado de baja potencia. Este miembro puede tener uno de los siguientes valores:

WdfTrue: se habilita la reactivación del sistema.

WdfFalse: la reactivación del sistema está deshabilitada.

WdfUseDefault: la activación del sistema está habilitada inicialmente de forma predeterminada; pero si el miembro UserControlOfWakeSettings está establecido en WakeAllowUserControl, el valor del usuario o el archivo INF del del controlador invalida el valor inicial.

Si la activación del sistema está habilitada y el sistema está a punto de entrar en un estado de baja potencia, el marco llama a la IPowerPolicyCallbackWakeFromSx::OnArmWakeFromSx función de devolución de llamada antes de que el dispositivo entre en un estado de baja potencia.

Valor devuelto

assignSxWakeSettings devuelve S_OK si la operación se realiza correctamente. De lo contrario, el método podría devolver uno de los siguientes valores:

Código devuelto Descripción
E_INVALIDARG
El autor de la llamada especificó un valor no válido para un parámetro de entrada.
HRESULT_FROM_NT(STATUS_INVALID_DEVICE_REQUEST)
El controlador de llamada no es el propietario de la directiva de energía del dispositivo.
de HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)
El parámetro DxState especifica un estado de alimentación de dispositivo no válido o el controlador de bus indica que el dispositivo no puede desencadenar una señal de reactivación,
 

Este método podría devolver uno de los otros valores que contiene Winerror.h.

Observaciones

La primera vez que un controlador llama a AssignSxWakeSettings, se producen las siguientes acciones:

  • El marco almacena los valores de parámetro.
  • Si el parámetro UserControlOfWakeSettings se establece en WakeAllowUserControl y si el parámetro Enabled está establecido en WdfUseDefault, el marco lee el registro para averiguar si el usuario ha habilitado la reactivación del sistema.
Durante las llamadas posteriores a AssignSxWakeSettings, el marco no almacena el valor del parámetro UserControlOfWakeSettings. En otras palabras, el marco realiza los pasos siguientes la primera vez que el controlador llama a AssignSxWakeSettings pero no durante las llamadas posteriores:
  • Almacena el valor del parámetro UserControlOfWakeSettings.
  • Busca una configuración de usuario en el Registro, si el valor del parámetro Enabled es WdfUseDefault.
Las reglas siguientes se aplican al valor especificado para el parámetro DxState:
  • El valor no se puede powerDeviceD0.
  • Si especifica DevicePowerMaximum, el marco usa el valor que usa el controlador en modo kernel para el bus del dispositivo proporcionado en el miembro DeviceWake de su estructura de WDF_DEVICE_POWER_CAPABILITIES.
  • No se puede especificar un estado de alimentación del dispositivo inferior al estado de alimentación del dispositivo en el DeviceWake miembro de la estructura WDF_DEVICE_POWER_CAPABILITIES del controlador de bus en modo kernel. (Es decir, si el del controlador de bus es powerDeviceD2, el valor dxState del controlador de función no puede ser PowerDeviceD3).
Para obtener información sobre las entradas del Registro que controlan las funcionalidades de reactivación de un dispositivo, consulte control de usuario del comportamiento de inactividad y reactivación del dispositivo en UMDF.

Para obtener más información sobre cómo admitir las funcionalidades de reactivación de un dispositivo, consulte compatibilidad del sistema Wake-Up en controladores basados en UMDF.

En el ejemplo de código siguiente se obtiene la interfaz IWDFDevice2 y, a continuación, llama a AssignSxWakeSettings.

    IWDFDevice2 *pIWDFDevice2 = NULL;
    HRESULT hr;

    //
    // Get a pointer to the IWDFDevice2 interface.
    //
    hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
                                     (void**) &pIWDFDevice2);
    if (SUCCEEDED(hr)) 
    {
        hr = pIWDFDevice2->AssignSxWakeSettings(PowerDeviceMaximum,
                                                WakeAllowUserControl,
                                                WdfUseDefault);
    }
...
    SAFE_RELEASE(pIWDFDevice2);

Requisitos

Requisito Valor
fin del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
de la plataforma de destino de Escritorio
versión mínima de UMDF 1.9
encabezado de wudfddi.h (incluya Wudfddi.h)
DLL de WUDFx.dll

Consulte también

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings