Condividi tramite


struttura PO_FX_COMPONENT_V1 (wdm.h)

La struttura PO_FX_COMPONENT descrive gli attributi dello stato di alimentazione di un componente in un dispositivo.

Sintassi

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;

Members

Id

ID componente che identifica in modo univoco questo componente rispetto agli altri componenti del dispositivo. Il driver deve specificare un valore diverso da zero per questo membro se il framework di risparmio energia (PoFx) richiede un ID componente per distinguere questo componente da altri componenti simili nello stesso dispositivo. Questo membro è facoltativo. Se questo membro non viene utilizzato, deve essere impostato su tutti gli zeri.

IdleStateCount

Numero di elementi nella matrice a cui punta il membro IdleStates . Inoltre, questo membro specifica il numero di stati di alimentazione fx supportati dal componente. Un componente deve supportare almeno uno stato Fx (F0).

DeepestWakeableIdleState

Indice dello stato fx più profondo da cui il componente può riattivarsi. Specificare 0 per F0, 1 per F1 e così via. Questo indice deve essere minore di IdleStateCount.

IdleStates

Puntatore a una matrice di PO_FX_COMPONENT_IDLE_STATE . La lunghezza di questa matrice viene specificata dal membro IdleStateCount . Ogni elemento della matrice specifica gli attributi di uno stato di alimentazione Fx supportato dal componente. L'elemento 0 descrive F0, l'elemento 1 descrive F1 e così via.

Commenti

Quando un driver di dispositivo registra un dispositivo con PoFx, il driver fornisce una struttura PO_FX_DEVICE che contiene le informazioni di registrazione. Questa struttura contiene una matrice di strutture PO_FX_COMPONENT . Gli elementi in questa matrice descrivono gli attributi di alimentazione dei singoli componenti nel dispositivo. PoFx usa le informazioni in questa matrice per gestire le impostazioni di risparmio energia di questi componenti.

Il membro ID contiene un ID componente che PoFx può usare per identificare in modo univoco un componente. Non confondere l'ID componente con l'indice del componente, usato da una routine come PoFxActivateComponent per identificare un componente in un dispositivo registrato. Un indice del componente è un indice nella matrice Components nella struttura PO_FX_DEVICE usata dal driver di dispositivo per registrare il dispositivo con PoFx. Se la matrice Components contiene N elementi, gli indici dei componenti sono valori interi compresi nell'intervallo da 0 a N-1. Al contrario, un ID componente è un valore GUID.

Il membro Flags può essere impostato sul valore PO_FX_COMPONENT_FLAG_F0_ON_DX se il driver specificato per PO_FX_VERSION_V2 durante la registrazione con PoFx, ovvero durante la chiamata alla routine PoFxRegisterDevice , il driver ha specificato il valore PO_FX_VERSION_V2 per il membro Version della struttura PO_FX_DEVICE passata al parametro Device . Se viene specificato il flag PO_FX_COMPONENT_FLAG_F0_ON_DX , PoFx inserisce il componente nello stato di alimentazione F0 durante le transizioni Dx e per i runtime di integrazione di attesa/riattivazione. Prima di inviare un IRP Dx o un IRP di attesa/riattivazione allo stack di dispositivi (a seconda di quale evento si verifica per primo), il risparmio energia eseguirà la transizione del componente nello stato F0. Il componente verrà mantenuto in F0 fino a quando l'IRP di riattivazione/attesa non viene annullata o completata oppure il driver Dx IRP viene completato e il driver ha chiamato la routine PoFxReportDevicePoweredOn (a qualsiasi evento si verifica per ultimo).

Dipendenze dei componenti

PoFx supporta le dipendenze dei componenti logici all'interno di un dispositivo (ma non tra dispositivi diversi). Durante la registrazione del dispositivo per ogni componente, il driver può fornire un numero (membro ProviderCount ) e una matrice di indici dei componenti (il membro Provider ) da cui dipende questo componente; questi sono noti come provider. PoFx garantisce che il componente non diventi attivo fino a quando non sono attivi tutti i relativi provider.

Le dipendenze dei componenti formano un grafico diretto in cui un bordo punta da un componente dipendente a un provider e rappresenta una dipendenza. Durante la registrazione del dispositivo, PoFx convalida il grafico delle dipendenze: i cicli e i bordi ripetuti non sono consentiti e la profondità del grafico per l'attraversamento di ricerca depth-first non può superare quattro. PoFx imposta anche il conteggio dei riferimenti attivi dei componenti in base al grafico delle dipendenze; ovvero, il conteggio dei riferimenti attivi di ogni provider viene incrementato una volta per ogni componente che dipende da esso.

Durante l'attivazione del componente, PoFx attiva prima tutti i provider. Dopo che un componente è attivo, PoFx controlla ogni componente dipendente e continua l'attivazione, se necessario.

Quando il componente passa allo stato di inattività, PoFx rende prima di tutto inattive i componenti dipendenti. Dopo aver completato il driver ComponentIdleConditionCallback e il plug-in di estensione della piattaforma (PEP) riceve una notifica che indica che il componente è inattivo, PoFx attraversa in modo ricorsivo il grafico delle dipendenze in attraversamento di ampiezza e inattività asincrona di ogni provider.

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows 8.
Intestazione wdm.h (include Wudfwdm.h)

Vedi anche

Risparmio energia a livello di componente

PO_FX_COMPONENT_IDLE_STATE

PO_FX_DEVICE