Função PoFxIdleComponent (wdm.h)

A rotina PoFxIdleComponent diminui a contagem de referência de ativação no componente especificado.

Sintaxe

void PoFxIdleComponent(
  [in] POHANDLE Handle,
  [in] ULONG    Component,
  [in] ULONG    Flags
);

Parâmetros

[in] Handle

Um identificador que representa o registro do dispositivo com a PoFx (estrutura de gerenciamento de energia). O driver de dispositivo recebeu anteriormente esse identificador da rotina PoFxRegisterDevice .

[in] Component

O índice que identifica o componente. Esse parâmetro é um índice na matriz Components 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 variam de 0 a N–1.

[in] Flags

Os sinalizadores para a operação ociosa. Defina esse membro como zero ou como um dos seguintes sinalizadores PO_FX_FLAG_XXX bits:

  • PO_FX_FLAG_BLOCKING
  • PO_FX_FLAG_ASYNC_ONLY
Esses dois bits de sinalizador são mutuamente exclusivos. Para obter mais informações, consulte Comentários.

Retornar valor

Nenhum

Comentários

Um driver de dispositivo chama PoFxIdleComponent para liberar uma referência de ativação para um componente em um dispositivo. O driver obteve a referência de ativação em uma chamada anterior para a rotina PoFxActivateComponent . O driver deve conter uma referência de ativação em um componente somente enquanto o driver precisa acessar o componente. Manter uma referência de ativação em um componente que não está sendo usado impede que o componente entre em um estado fx de baixa potência.

Se o driver não tiver outras referências de ativação para o componente, PoFxIdleComponent iniciará uma transição da condição ativa para a condição ociosa. Quando essa transição for concluída, a PoFx chamará a rotina ComponentIdleConditionCallback do driver para notificar o driver. Se o driver reter uma ou mais referências de ativação adicionais no componente, o componente permanecerá na condição ativa e a rotina ComponentIdleConditionCallback não será chamada.

O PoFx mantém uma contagem de referência de ativação para cada componente no dispositivo. A rotina PoFxActivateComponent incrementa essa contagem e PoFxIdleComponent a diminui. O componente permanece na condição ativa enquanto essa contagem é diferente de zero. Quando o driver libera sua última referência de ativação para um componente, a contagem diminui para zero e o componente entra na condição ociosa. Depois que o componente entra na condição ociosa, o PoFx pode potencialmente alternar o componente para um estado fx de baixa potência. Para obter mais informações, consulte PoFxActivateComponent.

Se Flags = PO_FX_FLAG_BLOCKING, a chamada PoFxIdleComponent será síncrona. Nesse caso, PoFxIdleComponent aguarda o retorno até que o componente conclua a transição para a condição ociosa. PoFxIdleComponent chama a rotina de retorno de chamada ComponentIdleConditionCallback do driver para informar ao driver que o componente está na condição ociosa. Esse retorno de chamada ocorre no mesmo thread que a chamada para PoFxIdleComponent e PoFxIdleComponent retorna somente após o retorno de chamada ComponentIdleConditionCallback retornar.

Se Flags = PO_FX_FLAG_ASYNC_ONLY, a chamada PoFxIdleComponent será assíncrona. Nesse caso, PoFxIdleComponent agenda o retorno de chamada ComponentIdleConditionCallback para ocorrer em outro thread e retorna sem esperar que o retorno de chamada ocorra. O retorno de chamada pode ocorrer antes ou depois do retorno de PoFxIdleComponent . O driver deve contar com o retorno de chamada ComponentIdleConditionCallback para determinar quando o componente conclui a transição para a condição ociosa. Até que esse retorno de chamada ocorra, o driver deve assumir que o componente ainda pode estar na condição ativa.

O driver pode definir Flags = 0 para indicar que não se importa se a chamada PoFxIdleComponent é síncrona ou assíncrona. Nesse caso, a PoFx decide se deseja tornar a chamada síncrona ou assíncrona.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Plataforma de Destino Universal
Cabeçalho wdm.h
Biblioteca Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

Confira também

ComponentIdleConditionCallback

PO_FX_DEVICE

PO_FX_FLAG_XXX

PoFxActivateComponent

PoFxRegisterDevice