Condividi tramite


EVT_WDF_DEVICE_D0_EXIT funzione di callback (wdfdevice.h)

[Si applica a KMDF e UMDF]

La funzione di callback di un driver EvtDeviceD0Exit esegue operazioni necessarie quando il dispositivo del driver lascia lo stato di alimentazione D0.

Sintassi

EVT_WDF_DEVICE_D0_EXIT EvtWdfDeviceD0Exit;

NTSTATUS EvtWdfDeviceD0Exit(
  [in] WDFDEVICE Device,
  [in] WDF_POWER_DEVICE_STATE TargetState
)
{...}

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

[in] TargetState

Enumeratore WDF_POWER_DEVICE_STATEtipizzato che identifica lo stato di alimentazione del dispositivo che il dispositivo sta per entrare.

Valore restituito

Se il EvtDeviceD0Exit funzione di callback non rileva errori, deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(stato) è uguale TRUE. In caso contrario, deve restituire un valore di stato per il quale NT_SUCCESS( stato) è uguale a FALSE.

Osservazioni

Per registrare un EvtDeviceD0Exit funzione di callback, un driver deve chiamare WdfDeviceInitSetPnpPowerEventCallbacks.

Se il driver ha registrato un EvtDeviceD0Exit funzione di callback, il framework chiama la funzione ogni volta che uno dei dispositivi del driver lascia lo stato di funzionamento (D0). Un dispositivo lascia lo stato D0 quando si verifica uno dei seguenti:

  • Il sistema e tutti i suoi dispositivi stanno per lasciare i loro stati di lavoro e entrare in uno stato di basso consumo.
  • Il dispositivo sta per entrare in uno stato a basso consumo perché è inattiva, se il dispositivo supporta l'inattività a basso consumo.
  • Il gestore Plug and Play sta tentando di ridistribuire le risorse hardware del sistema.
  • Un utente ha indicato, in genere tramite l'interfaccia utente di un'applicazione, che vuole rimuovere il dispositivo.
Il framework chiama anche il EvtDeviceD0Exit funzione di callback dopo che un dispositivo è stato rimosso in modo imprevisto (rimosso a sorpresa).

Per altre informazioni sui casi in cui il framework chiama questa funzione di callback, vedere scenari di risparmio energia e PnP.

A meno che il dispositivo non sia stato rimosso a sorpresa, il framework chiama questa funzione di callback immediatamente dopo che disabilita gli interrupt del dispositivo, ma prima che l'alimentazione del dispositivo venga ridotta da D0. Il parametro TargetState identifica lo stato di alimentazione del dispositivo che il dispositivo sta per entrare.

Il EvtDeviceD0Exit funzione di callback deve eseguire tutte le operazioni necessarie prima che il dispositivo entri nello stato di basso consumo specificato, ad esempio salvando eventuali informazioni che il driver dovrà ripristinare in seguito lo stato di alimentazione D0 del dispositivo.

Se il parametro TargetState è WdfPowerDevicePrepareForHibernation, il driver non deve arrestare il dispositivo, perché il sistema userà il dispositivo quando salva il file di ibernazione.

Se TargetState è WdfPowerDeviceD3Final, è consigliabile presupporre che il sistema sia spento, il dispositivo sta per essere rimosso o che sia in corso un ribilanciamento delle risorse . Se il driver deve salvare le informazioni, deve scriverlo su disco o su un altro supporto di archiviazione permanente. Tuttavia, non è corretto controllare WdfPowerDeviceD3Final e quindi eseguire operazioni di pulizia per la rimozione del dispositivo. Ad esempio, se un dispositivo che ha immesso lo stato di alimentazione Dx a causa dell'inattività viene rimosso successivamente, il relativo EvtDeviceD0Exit non verrà chiamato di nuovo. La posizione corretta per eseguire questo lavoro sarebbe invece EvtDeviceReleaseHardware.

Per altre informazioni sui driver che forniscono questa funzione di callback, vedere Supporto di PnP e risparmio energia nei driver di funzione.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.0
versione minima di UMDF 2.0
intestazione wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL

Vedere anche

EvtDeviceD0Entry