estructura PO_FX_COMPONENT_V1 (wdm.h)

La estructura PO_FX_COMPONENT describe los atributos de estado de energía de un componente de un dispositivo.

Sintaxis

typedef struct _PO_FX_COMPONENT_V1 {
  GUID                        Id;
  ULONG                       IdleStateCount;
  ULONG                       DeepestWakeableIdleState;
  PPO_FX_COMPONENT_IDLE_STATE IdleStates;
} PO_FX_COMPONENT_V1, *PPO_FX_COMPONENT_V1;

Miembros

Id

Identificador de componente que identifica de forma única este componente con respecto a los demás componentes del dispositivo. El controlador debe especificar un valor distinto de cero para este miembro si el marco de administración de energía (PoFx) requiere un identificador de componente para distinguir este componente de otros componentes similares en el mismo dispositivo. Este miembro es opcional. Si no se usa este miembro, debe establecerse en todos los ceros.

IdleStateCount

Número de elementos de la matriz a los que apunta el miembro IdleStates . Además, este miembro especifica el número de estados de energía fx que admite el componente. Un componente debe admitir al menos un estado Fx (F0).

DeepestWakeableIdleState

Índice del estado Fx más profundo desde el que el componente puede reactivar. Especifique 0 para F0, 1 para F1, etc. Este índice debe ser menor que IdleStateCount.

IdleStates

Puntero a una matriz de PO_FX_COMPONENT_IDLE_STATE . El miembro IdleStateCount especifica la longitud de esta matriz. Cada elemento de matriz especifica los atributos de un estado de energía Fx admitido por el componente. El elemento 0 describe F0, el elemento 1 describe F1, etc.

Comentarios

Cuando un controlador de dispositivo registra un dispositivo con PoFx, el controlador proporciona una estructura de PO_FX_DEVICE que contiene la información de registro. Esta estructura contiene una matriz de estructuras de PO_FX_COMPONENT . Los elementos de esta matriz describen los atributos de potencia de los componentes individuales del dispositivo. PoFx usa la información de esta matriz para administrar la configuración de energía de estos componentes.

El miembro Id contiene un identificador de componente que PoFx puede usar para identificar de forma única un componente. No confunda el identificador de componente con el índice de componentes, que una rutina como PoFxActivateComponent usa para identificar un componente en un dispositivo registrado. Un índice de componentes es un índice en la matriz Components de la estructura PO_FX_DEVICE que el controlador de dispositivo usó para registrar el dispositivo con PoFx. Si la matriz Components contiene N elementos, los índices de componentes son valores enteros en el intervalo de 0 a N-1. Por el contrario, un identificador de componente es un valor GUID.

El miembro Flags se puede establecer en el valor de PO_FX_COMPONENT_FLAG_F0_ON_DX si el controlador especificó compatibilidad para PO_FX_VERSION_V2 durante el registro con PoFx (es decir, durante la llamada a la rutina PoFxRegisterDevice , el controlador especificó el valor PO_FX_VERSION_V2 para el miembro Version de la estructura de PO_FX_DEVICE que se pasó al parámetro Device ). Si se especifica la marca PO_FX_COMPONENT_FLAG_F0_ON_DX , PoFx colocará el componente en el estado de energía F0 durante las transiciones dx y para irp de espera/reactivación. Antes de enviar un IRP dx o irP de espera/reactivación a la pila de dispositivos (lo que ocurra primero), el administrador de energía pasará el componente al estado F0. El componente se mantendrá en F0 hasta que se cancele o complete el IRP de reactivación o espera, o el DX IRP se completa y el controlador ha llamado a la rutina PoFxReportDevicePoweredOn (lo que ocurra en último lugar).

Dependencias de componentes

PoFx admite dependencias de componentes lógicos dentro de un dispositivo (pero no entre distintos dispositivos). Durante el registro de dispositivos para cada componente, el controlador puede proporcionar un número (el miembro ProviderCount ) y una matriz de índices de componentes (el miembro Proveedores ) del que depende este componente; se conocen como proveedores. PoFx garantiza que el componente no estará activo hasta que todos sus proveedores estén activos.

Las dependencias de componente forman un gráfico dirigido donde un borde apunta de un componente dependiente a un proveedor y representa una dependencia. Durante el registro del dispositivo, PoFx valida el gráfico de dependencias: los ciclos y los bordes repetidos no se permiten y la profundidad del gráfico para el recorrido de búsqueda en profundidad no puede superar los cuatro. PoFx también establece el recuento de referencias activas de los componentes según el gráfico de dependencias; es decir, el recuento de referencias activas de cada proveedor se incrementa una vez para cada componente que depende de él.

Durante la activación del componente, PoFx activa primero todos los proveedores de forma asincrónica. Una vez que un componente está activo, PoFx comprueba todos los componentes dependientes y continúa su activación si es necesario.

Cuando el componente realiza la transición al estado inactivo, PoFx primero hace que los componentes dependientes están inactivos. Después de que el controlador complete ComponentIdleConditionCallback y se notifique al complemento de extensión de plataforma (PEP) que el componente está inactivo, PoFx recorre de forma recursiva el gráfico de dependencias en recorrido de amplitud y inactiva asincrónicamente cada proveedor.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 8.
Encabezado wdm.h (incluya Wudfwdm.h)

Consulte también

Administración de energía de nivel de componente

PO_FX_COMPONENT_IDLE_STATE

PO_FX_DEVICE