estrutura PO_FX_COMPONENT_V1 (wdm.h)
A estrutura PO_FX_COMPONENT descreve os atributos de estado de energia de um componente em um dispositivo.
Sintaxe
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;
Membros
Id
Uma ID de componente que identifica exclusivamente esse componente em relação aos outros componentes no dispositivo. O driver deve especificar um valor diferente de zero para esse membro se a PoFx (estrutura de gerenciamento de energia) exigir uma ID de componente para distinguir esse componente de outros componentes semelhantes no mesmo dispositivo. Esse membro é opcional. Se esse membro não for usado, ele deverá ser definido como todos os zeros.
IdleStateCount
O número de elementos na matriz que é apontado pelo membro IdleStates . Além disso, esse membro especifica o número de estados de energia fx aos quais o componente dá suporte. Um componente deve dar suporte a pelo menos um estado fx (F0).
DeepestWakeableIdleState
O índice do estado fx mais profundo do qual o componente pode ser ativado. Especifique 0 para F0, 1 para F1 e assim por diante. Esse índice deve ser menor que IdleStateCount.
IdleStates
Um ponteiro para uma matriz de PO_FX_COMPONENT_IDLE_STATE . O comprimento dessa matriz é especificado pelo membro IdleStateCount . Cada elemento de matriz especifica os atributos de um estado de energia Fx com suporte do componente. O elemento 0 descreve F0, o elemento 1 descreve F1 e assim por diante.
Comentários
Quando um driver de dispositivo registra um dispositivo com PoFx, o driver fornece uma estrutura PO_FX_DEVICE que contém as informações de registro. Essa estrutura contém uma matriz de estruturas de PO_FX_COMPONENT . Os elementos nesta matriz descrevem os atributos de energia dos componentes individuais no dispositivo. O PoFx usa as informações nessa matriz para gerenciar as configurações de energia desses componentes.
O membro ID contém uma ID de componente que PoFx pode usar para identificar exclusivamente um componente. Não confunda a ID do componente com o índice de componente, que uma rotina como PoFxActivateComponent usa para identificar um componente em um dispositivo registrado. Um índice de componente é um índice na matriz Componentes na estrutura PO_FX_DEVICE que o driver de dispositivo usou para registrar o dispositivo com PoFx. Se a matriz Components contiver N elementos, os índices de componentes serão valores inteiros no intervalo de 0 a N-1. Por outro lado, uma ID de componente é um valor GUID.
O membro Flags poderá ser definido como o valor PO_FX_COMPONENT_FLAG_F0_ON_DX se o driver tiver especificado suporte para PO_FX_VERSION_V2 durante o registro com PoFx (ou seja, durante a chamada para a rotina PoFxRegisterDevice , o driver especificou o valor PO_FX_VERSION_V2 para o membro Version da estrutura PO_FX_DEVICE que foi passada para o parâmetro Device ). Se o sinalizador PO_FX_COMPONENT_FLAG_F0_ON_DX for especificado, PoFx colocará o componente no estado de energia F0 durante as transições Dx e para IRPs de espera/ativação. Antes de expedir um IRP Dx ou um IRP de espera/ativação para a pilha do dispositivo (o que acontecer primeiro), o power manager fará a transição do componente para o estado F0. O componente será mantido em F0 até que o IRP de ativação/espera seja cancelado ou concluído ou o Dx IRP seja concluído e o driver tenha chamado a rotina PoFxReportDevicePoweredOn (o que acontecer por último).
Dependências de componente
O PoFx dá suporte a dependências de componente lógico em um dispositivo (mas não em dispositivos diferentes). Durante o registro do dispositivo para cada componente, o driver pode fornecer um número (o membro ProviderCount ) e uma matriz de índices de componente (o membro Provedores ) do qual esse componente depende; eles são conhecidos como provedores. A PoFx garante que o componente não se tornará ativo até que todos os seus provedores estejam ativos.As dependências de componente formam um grafo direcionado em que uma borda aponta de um componente dependente para um provedor e representa uma dependência. Durante o registro do dispositivo, a PoFx valida o grafo de dependência: ciclos e bordas repetidas não são permitidos e a profundidade do grafo para a passagem de pesquisa de profundidade não pode exceder quatro. PoFx também define a contagem de referência ativa dos componentes de acordo com o grafo de dependência; ou seja, a contagem de referência ativa de cada provedor é incrementada uma vez para cada componente que depende dele.
Durante a ativação do componente, o PoFx ativa de forma assíncrona todos os provedores primeiro. Depois que um componente estiver ativo, o PoFx verificará todos os componentes dependentes e continuará a ativação, se necessário.
Quando o componente faz a transição para o estado ocioso, o PoFx primeiro torna os componentes dependentes ociosos. Depois que o driver conclui o ComponentIdleConditionCallback e o PEP (plug-in de extensão de plataforma) é notificado de que o componente está ocioso, o PoFx atravessa recursivamente o grafo de dependência na passagem de largura e ociosa de forma assíncrona de cada provedor.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte começando com Windows 8. |
Cabeçalho | wdm.h (inclua Wudfwdm.h) |