estructura PO_FX_COMPONENT_V2 (wdm.h)
La estructura PO_FX_COMPONENT describe los atributos de estado de energía de un componente en un dispositivo.
Sintaxis
typedef struct _PO_FX_COMPONENT_V2 {
GUID Id;
ULONGLONG Flags;
ULONG DeepestWakeableIdleState;
ULONG IdleStateCount;
PPO_FX_COMPONENT_IDLE_STATE IdleStates;
ULONG ProviderCount;
PULONG Providers;
} PO_FX_COMPONENT_V2, *PPO_FX_COMPONENT_V2;
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.
Flags
Este miembro se puede establecer en el siguiente bit de marca: PO_FX_COMPONENT_FLAG_F0_ON_DX. Para obtener más información, vea la sección Comentarios.
DeepestWakeableIdleState
Índice del estado fx más profundo desde el que el componente se puede reactivar. Especifique 0 para F0, 1 para F1, etc. Este índice debe ser menor que IdleStateCount.
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).
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.
ProviderCount
Valor que especifica el número de componentes de los que depende este componente. Para obtener más información, vea Dependencias de componentes en Comentarios.
Providers
Un puntero a una matriz de índices de componentes de los que depende este componente. Para obtener más información, vea Dependencias de componentes en Comentarios.
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 del componente, que una rutina como PoFxActivateComponent usa para identificar un componente en un dispositivo registrado. Un índice de componente 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 componente 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 de PO_FX_COMPONENT_FLAG_F0_ON_DX , PoFx colocará el componente en el estado de alimentación F0 durante las transiciones dx y para IRP de espera/reactivación. Antes de enviar un IRP dx o esperar o reactivar IRP a la pila de dispositivos (lo que ocurra primero), el administrador de energía realizará la transición del 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 IRP dx se completa y el controlador ha llamado a la rutina PoFxReportDevicePoweredOn (el evento que ocurra por última vez).
Dependencias de componentes
PoFx admite dependencias de componentes lógicos dentro de un dispositivo (pero no entre diferentes 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 se activará hasta que todos sus proveedores estén activos.Las dependencias de componentes 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 por primera 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 de forma asincrónica todos los proveedores primero. Una vez activo un componente, PoFx comprueba todos los componentes dependientes y continúa su activación si es necesario.
Cuando el componente pasa al estado inactivo, PoFx primero hace que los componentes dependientes permanezcan inactivos. Una vez completado el controlador ComponentIdleConditionCallback y se notifica al complemento de extensión de plataforma (PEP) que el componente está inactivo, PoFx recorre recursivamente el gráfico de dependencias en el 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) |