Funzione PoFxIssueComponentPerfStateChangeMultiple (wdm.h)
La routine PoFxIssueComponentPerfStateChangeMultiple invia una richiesta per modificare gli stati delle prestazioni in più set di stati delle prestazioni contemporaneamente per un componente del dispositivo.
Sintassi
void PoFxIssueComponentPerfStateChangeMultiple(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] ULONG PerfChangesCount,
[in] PO_FX_PERF_STATE_CHANGE [] PerfChanges,
[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] PerfChangesCount
Numero di richieste di modifica dello stato delle prestazioni contenute nella matrice PerfChanges .
[in] PerfChanges
Primo elemento in una matrice di strutture PO_FX_PERF_STATE_CHANGE che rappresentano gli stati delle prestazioni a cui il driver intende eseguire la transizione. Ogni elemento della matrice rappresenta una singola richiesta di modifica dello stato delle prestazioni.
[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
Un driver chiama PoFxIssueComponentPerfStateChangeMultiple, il framework di risparmio energia (PoFx) richiederà al plug-in di estensione della piattaforma (PEP) di posizionare i set di stati di prestazioni del componente negli stati delle prestazioni specificati. 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 PoFxIssueComponentPerfStateChangeMultiple è sincrona. In questo caso , PoFxIssueComponentPerfStateChangeMultiple 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 PoFxIssueComponentPerfStateChangeMultiple e PoFxIssueComponentPerfStateChangeMultiple restituisce solo dopo la restituzione del callback ComponentPerfStateCallback .
Se Flags = PO_FX_FLAG_ASYNC_ONLY, la chiamata PoFxIssueComponentPerfStateChangeMultiple è asincrona. In questo caso, PoFxIssueComponentPerfStateChangeMultiple 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 PoFxIssueComponentPerfStateChangeMultiple . 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 PoFxIssueComponentPerfStateChangeMultiple è 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 modifica degli stati delle prestazioni, il driver deve attendere fino a ricevere il callback prima di eseguire il commit degli stati delle prestazioni nell'hardware.
È consentita solo una singola chiamata della routine PoFxIssueComponentPerfStateChangeMultiple 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