Compartir a través de


SET_D3COLD_SUPPORT función de devolución de llamada (wdm.h)

La rutina de devolución de llamada SetD3ColdSupport habilita o deshabilita las transiciones al estado de energía del dispositivo D3cold.

Sintaxis

SET_D3COLD_SUPPORT SetD3coldSupport;

void SetD3coldSupport(
  [in, optional] PVOID Context,
  [in]           BOOLEAN D3ColdSupport
)
{...}

Parámetros

[in, optional] Context

Puntero a información de contexto específica de la interfaz. El autor de la llamada establece este parámetro en el valor del context miembro de la estructura D3COLD_SUPPORT_INTERFACE para la interfaz.

[in] D3ColdSupport

Indica si se permiten transiciones de D3hot a D3cold. Establézcalo en TRUE para habilitar estas transiciones. De lo contrario, establezca en FALSE. Para obtener más información, vea Comentarios.

Valor devuelto

Ninguno

Observaciones

El controlador que es el propietario de la directiva de energía (PPO) para un dispositivo puede llamar a esta rutina para habilitar o deshabilitar las transiciones al subestado D3cold que puede producirse cuando el equipo está en el estado de energía del sistema S0 (funciona) y no está preparando para salir de S0.

Si un dispositivo debe poder indicar un evento de reactivación desde cualquier estado dx de baja potencia que entre, el controlador para este dispositivo no debe habilitar las transiciones al subestado D3cold a menos que el dispositivo pueda indicar un evento de reactivación desde este subestado. De lo contrario, después de escribir D3cold, el dispositivo no estará disponible hasta que el equipo se reinicie o se reactiva desde un estado de suspensión.

El controlador del dispositivo puede llamar a la rutina GetIdleWakeInfo para determinar si el dispositivo puede indicar un evento de reactivación de D3cold.

Si es necesario, el controlador de un dispositivo puede realizar una serie de llamadas setD3ColdSupport para habilitar y deshabilitar las transiciones D3cold en respuesta a condiciones de cambio dinámico.

Por ejemplo, un dispositivo gráfico podría tener un contexto de hardware grande para restaurar después de una transición de D3cold a D0. El tiempo necesario para restaurar este contexto puede o no ser aceptable en función del conjunto de tareas que el usuario está realizando actualmente. Además, el tiempo de restauración puede variar con esta combinación de tareas. Es posible que el controlador tenga que habilitar y deshabilitar dinámicamente las transiciones a D3cold a medida que cambia la combinación de tareas.

Un dispositivo puede entrar en el subestado D3cold solo desde el subestado D3hot. Si el controlador llama a SetD3ColdSupport para habilitar las transiciones de D3hot a D3cold, el dispositivo puede o no entrar en D3cold después de entrar en D3hot. En respuesta a un evento de reactivación, un dispositivo podría introducir D0 directamente desde D3hot sin pasar nunca a través de D3cold.

Cuando un dispositivo pasa de D3hot a D3cold, probablemente lo hace porque la fuente de alimentación que comparte con algún número de otros dispositivos se desactivó. Algún tiempo después de que estos dispositivos escriban D3cold, el controlador de uno de los dispositivos podría solicitar una transición a D0. En respuesta a esta solicitud, el controlador de bus primario o el controlador de filtro ACPI activa la fuente de alimentación y todos los dispositivos que comparten la fuente de alimentación entran en sus estados de encendido predeterminados.

El único controlador de dispositivo que espera este cambio de estado de energía es el controlador que solicitó el cambio. Los controladores de los otros dispositivos deben recibir la notificación de este cambio para que puedan inicializar correctamente sus dispositivos para que funcionen en D0. Solo un controlador que pueda recibir esta notificación debe permitir que su dispositivo escriba D3cold. De lo contrario, el controlador no sabrá cuándo el dispositivo entra en D0.

A partir de Windows 8, un controlador WDM puede registrar su dispositivo con el marco de alimentación (PoFx) y recibir una notificación por parte del DevicePowerRequiredCallback rutina cuando el dispositivo entra en D0. Del mismo modo, un controlador KMDF puede registrar su dispositivo con PoFx y recibir una notificación por parte del EvtDeviceD0Entry devolución de llamada de eventos.

Un controlador que no registra su dispositivo con PoFx todavía puede recibir una notificación de una transición a D0 si el dispositivo está armado para reactivación. Cuando los conductores de autobús encienden la alimentación en el dispositivo, completan la solicitud de IRP_MN_WAIT_WAKE del controlador. En respuesta, el controlador inicializa su dispositivo para funcionar en D0.

Después de activar una fuente de alimentación compartida por varios dispositivos, el dispositivo cuyo controlador solicitó la transición a D0 podría ser el único de estos dispositivos que tiene trabajo. Es probable que los otros dispositivos estén inactivos, en cuyo caso sus controladores, después de algún tiempo, moverán estos dispositivos a D3hot.

Si el controlador llama a SetD3ColdSupport para deshabilitar las transiciones a D3cold, D0 es el único estado de alimentación del dispositivo que el dispositivo puede entrar desde D3hot.

Si el controlador llama a SetD3ColdSupport para habilitar las transiciones a D3cold, estas transiciones podrían deshabilitarse por otros motivos. El controlador puede llamar a la rutina de GetD3ColdCapability para determinar si el dispositivo es capaz de entrar en el subestado D3cold. Sin embargo, es posible que un controlador no necesite esta información. Si un dispositivo no es capaz de introducir D3cold, las llamadas a SetD3ColdSupport no tienen ningún efecto, pero son inofensivas.

La rutina setD3ColdSupport afecta solo a las transiciones D3hot-to-D3cold que pueden producirse cuando el equipo está en (y no está preparando para salir) el estado S0. Esta rutina no tiene ningún efecto en el caso en el que el equipo está preparando para salir de S0 y entrar en un estado de sistema de baja potencia. Un dispositivo en el subestado D3hot siempre puede entrar en el subestado D3cold justo antes de que el equipo entre en un estado de baja potencia del sistema.

De forma predeterminada, antes de la primera llamada al rutina SetD3ColdSupport, se deshabilitan las transiciones D3hot-to-D3cold. Para cambiar este valor predeterminado para que las transiciones D3hot-to-D3cold estén habilitadas antes de la primera llamada SetD3ColdSupport, el paquete de controladores del dispositivo puede incluir las dos líneas siguientes en la sección DDInstall.HW del archivo INF que instala el controlador:

Include = machine.inf
Needs = PciD3ColdSupported

Windows 8 es la primera versión de Windows para admitir dispositivos que pueden entrar y salir del subestado D3cold mientras el equipo permanece en estado S0. Para obtener más información, consulte Low-Power Estados.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.
de la plataforma de destino de Escritorio
encabezado de wdm.h (incluya Wdm.h)
irQL PASSIVE_LEVEL

Consulte también

D3COLD_SUPPORT_INTERFACE

DevicePowerRequiredCallback

EvtDeviceD0Entry

GetD3ColdCapability de

IRP_MN_WAIT_WAKE