estructura PO_FX_COMPONENT_V2 (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_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 Comentarios.
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.
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 potencia 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.
Observaciones
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 PO_FX_COMPONENT. Los elementos de esta matriz describen los atributos de energía 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 componente, que una rutina como PoFxActivateComponent usa para identificar un componente en un dispositivo registrado. Un índice de componentes es un índice en la matriz componentes de en la estructura de PO_FX_DEVICE que el controlador de dispositivo usó para registrar el dispositivo con PoFx. Si la matriz Componentes de contiene N elementos, los índices de componente son valores enteros del intervalo comprendido entre 0 y N-1. Por el contrario, un identificador de componente es un valor GUID.
El miembro Flags puede establecerse en el valor 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ó a la parámetro Device). Si se especifica la marca 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 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 IRP dx se ha completado y el controlador ha llamado a la rutina de PoFxReportDevicePoweredOn (el evento que ocurra en último lugar).
Dependencias de componentes de
PoFx admite dependencias de componentes lógicos dentro de un dispositivo (pero no en 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 Proveedores miembro) este componente depende de; se conocen como proveedores de . PoFx garantiza que el componente no estará activo 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 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 que el controlador complete el 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 recorridos de amplitud y inactiva asincrónicamente cada proveedor.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite a partir de Windows 8. |
encabezado de | wdm.h (incluya Wudfwdm.h) |