EVT_WDF_DEVICE_D0_EXIT funzione di callback (wdfdevice.h)

[Si applica a KMDF e UMDF]

La funzione di callback dell'evento EvtDeviceD0Exit di un driver 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_STATE tipizzato che identifica lo stato di alimentazione del dispositivo che il dispositivo sta per entrare.

Valore restituito

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

Commenti

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

Se il driver ha registrato una funzione di callback EvtDeviceD0Exit , il framework chiama la funzione ogni volta che uno dei dispositivi del driver lascia lo stato funzionante (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 immettere uno stato di bassa potenza.
  • Il dispositivo sta per immettere uno stato di bassa potenza perché è inattiva, se il dispositivo supporta l'inattività a bassa potenza.
  • 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 la funzione di callback EvtDeviceD0Exit dopo che un dispositivo è stato rimosso in modo imprevisto (rimosso a sorpresa).

Per altre informazioni su quando il framework chiama questa funzione di callback, vedere Scenari di Gestione energia e PnP.

A meno che il dispositivo non sia stato rimosso a sorpresa, il framework chiama questa funzione di callback immediatamente dopo aver disabilitato gli interruzioni 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 immettere.

La funzione di callback EvtDeviceD0Exit deve eseguire tutte le operazioni necessarie prima che il dispositivo entri nello stato di bassa potenza specificato, ad esempio il salvataggio di tutte le informazioni necessarie per il driver in seguito per ripristinare 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 durante il salvataggio del file di ibernazione.

Se TargetState è WdfPowerDeviceD3Final, è consigliabile presupporre che il sistema sia disattivato, il dispositivo sta per essere rimosso o che sia in corso un ribilanciamento della risorsa . 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 la 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 dispositivo EvtDeviceD0Exit non verrà chiamato di nuovo. Il posto corretto per eseguire questo lavoro sarebbe invece in EvtDeviceReleaseHardware .

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfdevice.h (includere Wdf.h)
IRQL PASSIVE_LEVEL

Vedi anche

EvtDeviceD0Entry