Funzione PoFxIdleComponent (wdm.h)
La routine PoFxIdleComponent decrementa il conteggio dei riferimenti di attivazione nel componente specificato.
Sintassi
void PoFxIdleComponent(
[in] POHANDLE Handle,
[in] ULONG Component,
[in] ULONG Flags
);
Parametri
[in] Handle
Handle che rappresenta la registrazione del dispositivo con il framework di risparmio energia (PoFx). Il driver di dispositivo ha ricevuto in precedenza questo handle dalla routine PoFxRegisterDevice .
[in] Component
Indice che identifica il componente. Questo parametro è un indice nella matrice Components nella struttura PO_FX_DEVICE utilizzata dal driver del dispositivo per registrare il dispositivo con PoFx. Se la matrice Components contiene elementi N, gli indici dei componenti sono compresi tra 0 e N-1.
[in] Flags
Flag per l'operazione inattiva. Impostare questo membro su zero o su uno dei flag seguenti PO_FX_FLAG_XXX bit:
- PO_FX_FLAG_BLOCKING
- PO_FX_FLAG_ASYNC_ONLY
Valore restituito
nessuno
Osservazioni
Un driver di dispositivo chiama PoFxIdleComponent per rilasciare un riferimento di attivazione a un componente in un dispositivo. Il driver ha ottenuto il riferimento all'attivazione in una chiamata precedente alla routine PoFxActivateComponent . Il driver deve contenere un riferimento di attivazione solo in un componente mentre il driver deve accedere al componente. Per contenere un riferimento di attivazione su un componente che non viene usato impedisce al componente di immettere uno stato fx a bassa potenza.
Se il driver non contiene altri riferimenti di attivazione al componente, PoFxIdleComponent avvia una transizione dalla condizione attiva alla condizione inattiva. Al termine di questa transizione, PoFx chiama la routine ComponentIdleConditionCallback del driver per notificare al driver. Se il driver mantiene uno o più riferimenti di attivazione aggiuntivi nel componente, il componente rimane nella condizione attiva e la routine ComponentIdleConditionCallback non viene chiamata.
PoFx gestisce un numero di riferimenti di attivazione per ogni componente nel dispositivo. La routine PoFxActivateComponent incrementa questo conteggio e PoFxIdleComponent la decrementa. Il componente rimane nella condizione attiva mentre questo conteggio è diverso da zero. Quando il driver rilascia l'ultimo riferimento di attivazione a un componente, il conteggio decrementa su zero e il componente entra nella condizione inattiva. Dopo che il componente entra nella condizione inattiva, PoFx può potenzialmente passare a uno stato fx a bassa potenza. Per altre informazioni, vedere PoFxActivateComponent.
Se Flags = PO_FX_FLAG_BLOCKING, la chiamata PoFxIdleComponent è sincrona. In questo caso, PoFxIdleComponent attende di tornare fino al completamento della transizione alla condizione inattiva. PoFxIdleComponent chiama la routine di callback ComponentIdleConditionCallback del driver per informare il driver che il componente si trova nella condizione di inattività. Questo callback si verifica nello stesso thread della chiamata a PoFxIdleComponent e PoFxIdleComponent restituisce solo dopo il callback ComponentIdleConditionCallback .
Se flag PO_FX_FLAG_ASYNC_ONLY = , la chiamata PoFxIdleComponent è asincrona. In questo caso, PoFxIdleComponent pianifica il callback ComponentIdleConditionCallback da eseguire in un altro thread e quindi restituisce senza attendere che venga eseguito il callback. Il callback può verificarsi prima o dopo la restituzione di PoFxIdleComponent . Il driver deve basarsi sul callback ComponentIdleConditionCallback per determinare quando il componente completa la transizione alla condizione inattiva. Fino a quando non si verifica questo callback, il driver deve presupporre che il componente possa comunque trovarsi nella condizione attiva.
Il driver può impostare Flags = 0 per indicare che non importa se la chiamata PoFxIdleComponent è sincrona o asincrona. In questo caso, PoFx decide se effettuare la chiamata sincrona o asincrona.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 8. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h |
Libreria | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |