Funzione PoFxIssueComponentPerfStateChange (wdm.h)
La routine PoFxIssueComponentPerfStateChange invia una richiesta di inserire un componente del dispositivo in uno stato di prestazioni specifico.
Sintassi
void PoFxIssueComponentPerfStateChange(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] PPO_FX_PERF_STATE_CHANGE PerfChange,
[in] PVOID Context
);
Parametri
[in] Handle
Handle che rappresenta la registrazione del dispositivo con PoFx. Il driver di dispositivo ha ricevuto in precedenza questo handle dalla routine PoFxRegisterDevice .
[in] Flags
Flag che modificano il comportamento dell'operazione di modifica dello stato delle prestazioni. Impostare questo membro su zero o su uno dei flag seguenti PO_FX_FLAG_XXX bit:
Questi due bit di flag si escludono a vicenda. Per altre informazioni, vedere la sezione Osservazioni.
[in] Component
Indice che identifica il componente. Questo parametro è 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 compresi tra 0 e N-1.
[in] PerfChange
Puntatore a una struttura PO_FX_PERF_STATE_CHANGE che rappresenta il nuovo stato di prestazioni del componente.
[in] Context
Puntatore al contesto per la routine di callback ComponentPerfStateCallback . Questo parametro è facoltativo e, Viene fornito in modo che un driver o un contesto di dispositivo possa essere passato alla routine di callback. Se questo parametro non viene usato, deve essere impostato su NULL.
Valore restituito
nessuno
Osservazioni
Quando un driver chiama PoFxIssueComponentPerfStateChange, il framework di risparmio energia (PoFx) richiede al plug-in di estensione della piattaforma (PEP) di posizionare lo stato delle prestazioni del componente impostato nello stato delle prestazioni specificato. Questa routine può essere utilizzata con tipi discreti e basati su intervalli di set di stati delle prestazioni. Per altre informazioni sui set di stati di prestazioni discreti e basati su intervalli, vedere PO_FX_PERF_STATE_TYPE.
Se Flags = PO_FX_FLAG_BLOCKING, la chiamata a PoFxIssueComponentPerfStateChange è sincrona. In questo caso , PoFxIssueComponentPerfStateChange attende di restituire finché il componente non completa la transizione dello stato delle prestazioni. La routine ComponentPerfStateCallback del driver viene chiamata per informare il driver che la modifica dello stato delle prestazioni del componente è stata completata. Questo callback si verifica nello stesso thread della chiamata a PoFxIssueComponentPerfStateChange e PoFxIssueComponentPerfStateChange restituisce solo dopo la restituzione del callback ComponentPerfStateCallback .
Se Flags = PO_FX_FLAG_ASYNC_ONLY, la chiamata PoFxIssueComponentPerfStateChange è asincrona. In questo caso , PoFxIssueComponentPerfStateChange pianifica la routine ComponentPerfStateCallback in un altro thread e quindi restituisce senza attendere che si verifichi il callback. Il callback può verificarsi prima o dopo la restituzione di PoFxIssueComponentPerfStateChange . Il driver deve basarsi sulla routine ComponentPerfStateCallback per determinare quando il componente completa la transizione al nuovo stato delle prestazioni.
Il driver può impostare Flags = 0 per indicare che non importa se la chiamata PoFxIssueComponentPerfStateChange è sincrona o asincrona. In questo caso, PoFx decide la sincronia della chiamata in base al fatto che pep usi una richiesta sincrona o asincrona per emettere la modifica dello stato delle prestazioni al componente.
Se vengono = passati flagPO_FX_FLAG_ASYNC_ONLY o nessun flag, questa routine richiede un IRQL di <= DISPATCH_LEVEL. Se Flags = PO_FX_FLAG_BLOCKING, questa routine richiede un IRQL di <= APC_LEVEL.
Questa funzione genererà sempre una chiamata alla routine ComponentPerfStateCallback indipendentemente dalla sincronizzazione della chiamata. Poiché il PEP può scegliere di negare la richiesta di modificare lo stato delle prestazioni, il driver deve attendere fino a ricevere il callback prima di eseguire il commit dello stato delle prestazioni nell'hardware.
È consentita solo una singola chiamata della routine PoFxIssueComponentPerfStateChange alla volta per ogni componente, indipendentemente dal fatto che la chiamata sia sincrona o asincrona. Dopo aver emesso una richiesta di modifica dello stato delle prestazioni, il driver deve attendere fino a quando componentPerfStateCallback viene ricevuto prima di chiamare di nuovo questa routine, anche se la richiesta prevede un diverso set di stati di prestazioni. Se questa routine viene chiamata di nuovo prima di attendere la ricezione di ComponentPerfStateCallback , si verificherà un controllo di bug.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 10. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h |
Libreria | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL o <= DISPATCH_LEVEL (vedere la sezione Osservazioni) |
Vedi anche
Gestione dello stato delle prestazioni del dispositivo