PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK funzione di callback (wdm.h)
La routine di callback DevicePowerNotRequiredCallback notifica al driver di dispositivo che il dispositivo non è necessario per rimanere nello stato di alimentazione D0.
Sintassi
PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;
void PoFxDevicePowerNotRequiredCallback(
[in] PVOID Context
)
{...}
Parametri
[in] Context
Puntatore al contesto di dispositivo. Il driver di dispositivo usa questo contesto per archiviare informazioni sullo stato di alimentazione corrente del dispositivo. Il driver di dispositivo ha specificato questo puntatore nel membro DeviceContext della struttura PO_FX_DEVICE usata dal driver per registrare il dispositivo con il framework di risparmio energia (PoFx). Questo contesto è opaco a PoFx.
Valore restituito
nessuno
Osservazioni
Quando PoFx chiama la routine DevicePowerNotRequiredCallback del driver, il driver deve prima decidere se avviare una transizione a uno stato Dx a basso consumo (inviando una richiesta di IRP_MN_SET_POWER nello stack di dispositivi) o per rimanere nello stato D0. Successivamente, senza attendere il completamento di una transizione Dx, il driver deve chiamare la routine PoFxCompleteDevicePowerNotRequired per notificare a PoFx che il driver ha completato la risposta al callback DevicePowerNotRequiredCallback . Il driver può chiamare PoFxCompleteDevicePowerNotRequired prima o dopo la restituzione della routine DevicePowerNotRequiredCallback .
Quando un dispositivo è nello stato D0 e lo stato Fx o la condizione attiva/inattiva di un componente nel dispositivo cambia, PoFx valuta se il dispositivo può entrare in uno stato Dx a basso consumo o deve rimanere nello stato D0. Se il dispositivo può entrare in uno stato Dx a basso consumo, PoFx chiama la routine DevicePowerNotRequiredCallback del driver.
Se il dispositivo entra in uno stato Dx a basso consumo in risposta a un callback DevicePowerNotRequiredCallback , ma PoFx successivamente determina che il dispositivo deve entrare nello stato D0, PoFx chiama la routine DevicePowerRequiredCallback del driver. In risposta a questa chiamata, il dispositivo deve entrare nello stato D0.
Esempio
Per definire una routine di callback DevicePowerNotRequiredCallback , è necessario innanzitutto fornire una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.
Ad esempio, per definire una routine di callback DevicePowerNotRequiredCallback denominata MyDevicePowerNotRequiredCallback
, usare il tipo di PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK come illustrato nell'esempio di codice seguente:
PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyDevicePowerNotRequiredCallback(
PVOID Context
)
{
// Function body
}
Il tipo di funzione PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_
alla definizione della funzione. L'annotazione _Use_decl_annotations_
garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver WDM. Per informazioni su _Use_decl_annotations_
, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato a partire da Windows 8. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wudfwdm.h) |
IRQL | Chiamato in IRQL <= DISPATCH_LEVEL. |