Condividi tramite


Funzione PoFxRegisterComponentPerfStates (wdm.h)

La routine PoFxRegisterComponentPerfStates registra un componente del dispositivo per la gestione dello stato delle prestazioni da parte del framework di risparmio energia (PoFx).

Sintassi

NTSTATUS PoFxRegisterComponentPerfStates(
  [in]  POHANDLE                             Handle,
  [in]  ULONG                                Component,
  [in]  ULONGLONG                            Flags,
  [in]  PPO_FX_COMPONENT_PERF_STATE_CALLBACK ComponentPerfStateCallback,
  [in]  PPO_FX_COMPONENT_PERF_INFO           InputStateInfo,
  [out] PPO_FX_COMPONENT_PERF_INFO           *OutputStateInfo
);

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] Component

Indice che identifica il componente i cui stati di prestazioni verranno gestiti. 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] Flags

Flag che modificano il comportamento della registrazione dello stato delle prestazioni. Impostare questo membro su zero o su uno dei flag seguenti PO_FX_FLAG_PERF_XXX bit:

Value Meaning
PO_FX_FLAG_PERF_PEP_OPTIONAL
0x1
Indica che il driver può modificare gli stati delle prestazioni senza assistenza dal plug-in di estensione della piattaforma (PEP) o che il driver sta registrando gli stati delle prestazioni con PoFx solo a scopo di registrazione. Se questo flag è impostato, la chiamata PoFxRegisterComponentPerfStates avrà comunque esito positivo se il PEP non supporta gli stati delle prestazioni per il componente.
PO_FX_FLAG_PERF_QUERY_ON_F0
0x2
Per alcuni dispositivi, il PEP potrebbe dover posizionare un set di stati di prestazioni per un componente in un determinato stato di prestazioni (noto come stato di prestazioni nominale) quando inattiva il componente. I driver impostano questo flag se il componente contiene stati di prestazioni nominale, nel qual caso PoFx eseguirà una query su PEP per determinare lo stato di prestazioni corrente quando il componente passa a F0.
PO_FX_FLAG_PERF_QUERY_ON_ALL_IDLE_STATES
0x4
Per alcuni dispositivi, il PEP potrebbe dover posizionare uno stato di prestazioni impostato per un componente in un determinato stato di prestazioni (noto come stato di prestazioni nominale) quando passa il componente tra stati di inattività. I driver impostano questo flag se questo componente contiene stati di prestazioni nominale, nel qual caso PoFx eseguirà una query su PEP per determinare lo stato di prestazioni corrente quando il componente passa tra stati di inattività.

[in] ComponentPerfStateCallback

Puntatore a una routine ComponentPerfStateCallback . Questa routine viene chiamata quando PoFx ha completato la registrazione e notificando al PEP una transizione dello stato delle prestazioni avviata dalla chiamata del driver a PoFxIssueComponentPerfStateChange o PoFxIssueComponentPerfStateChangeMultiple. Questo callback può essere lo stesso per tutti i componenti e tutti i dispositivi; PoFx fornisce l'handle del dispositivo e l'indice dei componenti in ogni chiamata di completamento.

[in] InputStateInfo

Se il driver fornisce informazioni sullo stato delle prestazioni, questo parametro contiene un puntatore a un driver allocato PO_FX_COMPONENT_PERF_INFO struttura che fornisce informazioni sullo stato delle prestazioni per PoFx. Se il driver richiede informazioni sullo stato delle prestazioni del PEP, questo parametro deve essere impostato su NULL.

[out] OutputStateInfo

Se il driver richiede informazioni sullo stato delle prestazioni dal PEP, dopo una registrazione corretta questo parametro contiene un puntatore a una struttura PO_FX_COMPONENT_PERF_INFO che fornisce informazioni sullo stato delle prestazioni definite dal PEP. Se il driver fornisce informazioni sullo stato delle prestazioni, questo parametro deve essere impostato su NULL.

La memoria allocata per questo parametro viene gestita da PoFx e il driver non deve liberare questa memoria quando il dispositivo viene rimosso. La durata di questa memoria è garantita per superare la durata del componente PoFx che contiene questi set di stati di prestazioni.

Valore restituito

PoFxRegisterComponentPerfStates restituisce STATUS_SUCCESS se PoFx accetta la registrazione dello stato delle prestazioni del dispositivo. Se una delle informazioni necessarie non viene fornita o non è corretta, la registrazione avrà esito negativo con un codice restituito diverso da STATUS_SUCCESS. I valori restituiti di errore possibili includono i codici di stato seguenti.

Codice restituito Description
STATUS_NOT_IMPLEMENTED
Il parametro Flags non include il flag PO_FX_FLAG_PERF_PEP_OPTIONAL e pep non è in grado di fornire la gestione dello stato delle prestazioni per questo dispositivo.
STATUS_INVALID_PARAMETER
Sia InputStateInfo che OutputStateInfo sono NULL oppure entrambi questi parametri non sono NULL oppure non sono presenti set di stati di prestazioni nella struttura PO_FX_COMPONENT_PERF_INFO assegnata al parametro InputStateInfo .

Osservazioni:

Si noti che PoFx esegue una copia approfondita delle strutture del dispositivo nella memoria.

Il driver o il plug-in dell'estensione della piattaforma (PEP) possono fornire informazioni sugli stati di prestazioni supportati da ogni componente:

  • Se il driver fornisce informazioni sullo stato delle prestazioni, il driver deve impostare il parametro InputStateInfo su un puntatore a una struttura PO_FX_COMPONENT_PERF_INFO che contiene le informazioni sullo stato delle prestazioni. In caso contrario, il driver deve impostare questo parametro su NULL.
  • Se pep fornisce informazioni sullo stato delle prestazioni, il driver deve impostare il parametro OutputStateInfo su un puntatore valido a una struttura PO_FX_COMPONENT_PERF_INFO che riceve le informazioni sullo stato delle prestazioni. In caso contrario, il driver deve impostare questo parametro su NULL.
Se pep non supporta gli stati delle prestazioni, il driver può registrarsi per il supporto dello stato delle prestazioni con PoFx solo a scopo di registrazione.

Se il driver esegue la registrazione per il supporto dello stato delle prestazioni solo a scopo di registrazione o se il driver può funzionare correttamente con o senza il supporto PEP per la gestione dello stato delle prestazioni, il driver deve impostare il flag PO_FX_FLAG_PERF_PEP_OPTIONAL nel parametro Flags . Se il flag è impostato, la chiamata di registrazione avrà esito positivo anche se pep non fornisce supporto per gli stati delle prestazioni.

Se il driver richiede che il PEP fornisca informazioni sullo stato delle prestazioni, il driver non può impostare il flag PO_FX_FLAG_PERF_PEP_OPTIONAL nel parametro Flags .

Requisiti

Requisito Value
Client minimo supportato Disponibile a partire da Windows 10.
Piattaforma di destinazione Universale
Header wdm.h
Library Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= APC_LEVEL

Vedere anche

ComponentPerfStateCallback

Gestione dello stato delle prestazioni dei dispositivi

PO_FX_COMPONENT_PERF_INFO

PoFxRegisterDevice