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 alimentación 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 llamador establece este parámetro en el valor del miembro Context de la estructura D3COLD_SUPPORT_INTERFACE para la interfaz.
[in] D3ColdSupport
Si se permiten transiciones de D3hot a D3cold. Establezca en TRUE para habilitar estas transiciones. De lo contrario, establezca en FALSE. Para obtener más información, vea Comentarios.
Valor devuelto
None
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 alimentación del sistema S0 (en funcionamiento) y no se prepara para salir de S0.
Si un dispositivo debe poder indicar un evento de reactivación desde cualquier estado dx de bajo consumo 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 active 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 desde D3cold.
Si es necesario, el controlador de un dispositivo puede realizar una serie de llamadas a SetD3ColdSupport para habilitar y deshabilitar las transiciones D3cold como 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 entra el dispositivo 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 de la rutina DevicePowerRequiredCallback cuando el dispositivo entra en D0. Del mismo modo, un controlador KMDF puede registrar su dispositivo con PoFx y recibir una notificación por la devolución de llamada de eventos EvtDeviceD0Entry .
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 controladores 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 demás 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, es posible que estas transiciones se deshabiliten por otros motivos. El controlador puede llamar a la rutina GetD3ColdCapability para determinar si el dispositivo es capaz de escribir el subestado D3cold. Sin embargo, es posible que un controlador no necesite esta información. Si un dispositivo no es capaz de escribir D3cold, las llamadas a SetD3ColdSupport no tienen ningún efecto, pero son inofensivas.
La rutina SetD3ColdSupport solo afecta a las transiciones D3hot-to-D3cold que pueden producirse cuando el equipo está en (y no se prepara para salir) el estado S0. Esta rutina no tiene ningún efecto en el caso en el que el equipo se está preparando para salir de S0 y entrar en un estado de sistema de bajo consumo. Un dispositivo en el subestado D3hot siempre puede entrar en el subestado D3cold justo antes de que el equipo entre en un estado de bajo consumo del sistema.
De forma predeterminada, antes de la primera llamada a la 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 a 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 Estados de Low-Power de dispositivo.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 8. |
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wdm.h) |
IRQL | PASSIVE_LEVEL |