Función WdfPdoInitRemovePowerDependencyOnParent (wdfpdo.h)

El método WdfPdoInitRemovePowerDependencyOnParent quita la dependencia de energía descrita en la sección Comentarios .

Sintaxis

void WdfPdoInitRemovePowerDependencyOnParent(
  PWDFDEVICE_INIT DeviceInit
);

Parámetros

DeviceInit

Puntero a una estructura de WDFDEVICE_INIT .

Valor devuelto

None

Observaciones

En general, el marco requiere que un controlador de bus primario entre en el estado de alimentación del dispositivo D0 antes de que un dispositivo secundario entre en D0 y, de forma similar, que un dispositivo secundario salga de D0 antes de que el elemento primario salga de D0.

Sin embargo, es posible que este comportamiento no sea deseado, en particular si el dispositivo secundario es un dispositivo virtual que no representa ningún hardware real. En S0 apagado de inactividad, es posible que el estado de alimentación del dispositivo secundario no sea relevante para el elemento primario. De hecho, es posible que el dispositivo secundario no tenga ninguna razón para realizar la detección de inactividad de S0. En este caso, sería mejor que el dispositivo primario realice la transición entre D0 y Dx en función de la actividad de E/S, en lugar de depender del estado de alimentación del dispositivo secundario.

La eliminación de la dependencia de energía tiene los siguientes efectos en el controlador de autobús:

  • Las devoluciones de llamada PnP/Power PDO se pueden ejecutar mientras el dispositivo primario está en Dx.
  • Las devoluciones de llamada de enable/disable-wake-at-bus pueden ejecutarse mientras el dispositivo primario está en Dx.
  • Una solicitud reenviada desde una cola administrada por energía en el PDO (suponiendo que el PDO es el propietario de la directiva de energía) a una cola no administrada por energía en el FDO podría enviarse mientras el controlador de autobús está en Dx.
  • La pila secundaria realiza transiciones de estado de energía independientemente de la pila primaria. Esto incluye escenarios como la reanudación rápida en la que la pila secundaria podría recibir su S-IRP e incluso terminar de procesar su D-IRP antes de que la pila primaria termine de procesar su propio IRP D-IRP.

Para quitar la dependencia de energía, el controlador de bus puede llamar a WdfPdoInitRemovePowerDependencyOnParent cuando crea el PDO para el dispositivo secundario.

Esta función no realiza ninguna acción si el controlador de bus primario no es el propietario de la directiva de energía de la pila de dispositivos primaria.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 2004
Versión mínima de KMDF 1.29
Encabezado wdfpdo.h (incluya Wdf.h)
Library Wdf01000.sys (KMDF)
IRQL PASSIVE_LEVEL