PO_FX_POWER_CONTROL_CALLBACK funzione di callback (wdm.h)
La routine di callback di PowerControlCallback esegue un'operazione di controllo energia richiesta dal framework di gestione energia (PoFx).
Sintassi
PO_FX_POWER_CONTROL_CALLBACK PoFxPowerControlCallback;
NTSTATUS PoFxPowerControlCallback(
PVOID DeviceContext,
[in] LPCGUID PowerControlCode,
[in, optional] PVOID InBuffer,
[in] SIZE_T InBufferSize,
[out, optional] PVOID OutBuffer,
[in] SIZE_T OutBufferSize,
[out, optional] PSIZE_T BytesReturned
)
{...}
Parametri
DeviceContext
[in] PowerControlCode
Puntatore al codice di controllo dell'alimentazione. Questo codice è un valore GUID che specifica l'operazione richiesta.
[in, optional] InBuffer
Puntatore al buffer contenente i dati di input per l'operazione. Il formato per i dati in questo buffer dipende dal codice di controllo dell'alimentazione specificato dal parametro PowerControlCode . Il parametro InBuffer è facoltativo e può essere specificato come NULL se l'operazione specificata non richiede dati di input.
[in] InBufferSize
Dimensioni, in byte, del buffer di input a cui punta il parametro InBuffer . Se InBuffer è NULL, questo parametro è zero.
[out, optional] OutBuffer
Puntatore al buffer a cui la routine di callback scrive i dati di output dall'operazione. Il formato per i dati in questo buffer dipende dal codice di controllo dell'alimentazione specificato dal parametro PowerControlCode . Il parametro OutBuffer è facoltativo e può essere specificato come NULL se l'operazione specificata non produce dati di output.
[in] OutBufferSize
Dimensioni, in byte, del buffer di output a cui fa riferimento il parametro OutBuffer . Se OutBuffer è NULL, questo parametro è zero.
[out, optional] BytesReturned
Puntatore a una posizione in cui la routine scrive il numero di byte di dati scritti nel buffer a cui fa riferimento OutBuffer. Il numero di byte scritti deve essere minore o uguale a OutBufferSize. Questo parametro è facoltativo e può essere specificato come NULL se il chiamante non deve conoscere il numero di byte scritti nel buffer di output.
Valore restituito
La routine PowerControlCallback restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di errore appropriato.
Commenti
PoFx chiama questa routine per inviare una richiesta di controllo energia direttamente al driver del dispositivo. Una richiesta di controllo alimentazione è simile a una richiesta di controllo I/O (IOCTL). A differenza di un IOCTL, tuttavia, una richiesta di controllo energia viene inviata direttamente al driver e non viene osservata da altri driver di dispositivo nello stack di dispositivi. Durante una chiamata di PowerControlCallback , il driver esegue in modo sincrono l'operazione richiesta.
Questa routine è facoltativa. Un driver di dispositivo che non supporta le operazioni di controllo energia non è necessario per implementare una routine di PowerControlCallback .
Il driver del dispositivo può chiamare la routine PoFxPowerControl per inviare una richiesta di controllo energia a PoFx.
Per altre informazioni sulle richieste di controllo energia, vedere PoFxPowerControl.
Esempio
Per definire una routine di callback di PowerControlCallback , è prima necessario specificare 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 usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.
Ad esempio, per definire una routine di callback powerControlCallback denominata MyPowerControlCallback
, usare il tipo di PO_FX_POWER_CONTROL_CALLBACK, come illustrato in questo esempio di codice:
PO_FX_POWER_CONTROL_CALLBACK MyPowerControlCallback;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
NTSTATUS
MyPowerControlCallback(
PVOID Context,
LPCGUID PowerControlCode,
PVOID InBuffer,
SIZE_T InBufferSize,
PVOID OutBuffer,
SIZE_T OutBufferSize,
PSIZE_T BytesReturned
)
{
// Function body
}
Il tipo di funzione PO_FX_POWER_CONTROL_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 usate le annotazioni applicate al tipo di funzione PO_FX_POWER_CONTROL_CALLBACK nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo 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. |