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 controladores UMDF nuevos deben escribirse con 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 con 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 el dispositivo y el sistema están en un 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_STATE que identifica el estado de baja potencia del dispositivo que el dispositivo entrará cuando el estado de alimentación del sistema caiga en un estado de baja potencia reactivable. El valor de DxState no puede ser PowerDeviceD0. DEVICE_POWER_STATE valores se definen en wdm.h.

[in] UserControlOfWakeSettings

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

[in] Enabled

Enumerador con tipo WDF_TRI_STATE que 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 : activar el sistema está habilitado.

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

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

Si la reactivación del sistema está habilitada y el sistema está a punto de entrar en un estado de baja potencia, el marco llama a la función de devolución de llamada IPowerPolicyCallbackWakeFromSx::OnArmWakeFromSx 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.
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 puede devolver uno de los otros valores que contiene Winerror.h.

Comentarios

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 activació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 puede ser PowerDeviceD0.
  • Si especifica DevicePowerMaximum, el marco usa el valor que 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 miembro DeviceWake de la estructura WDF_DEVICE_POWER_CAPABILITIES del controlador de bus en modo kernel. (En otras palabras, si el valor DeviceWake 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, se 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 Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1,9
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFDevice2

IWDFDevice2::AssignS0IdleSettings