Condividi tramite


struttura PO_FX_DEVICE_V3 (wdm.h)

La struttura PO_FX_DEVICE_V3 descrive gli attributi di alimentazione di un dispositivo nel framework di risparmio energia (PoFx), DFx (Directed PoFx)

Sintassi

typedef struct _PO_FX_DEVICE_V3 {
  ULONG                                      Version;
  ULONGLONG                                  Flags;
  PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
  PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK   ComponentIdleConditionCallback;
  PPO_FX_COMPONENT_IDLE_STATE_CALLBACK       ComponentIdleStateCallback;
  PPO_FX_DEVICE_POWER_REQUIRED_CALLBACK      DevicePowerRequiredCallback;
  PPO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK  DevicePowerNotRequiredCallback;
  PPO_FX_POWER_CONTROL_CALLBACK              PowerControlCallback;
  PPO_FX_DIRECTED_POWER_UP_CALLBACK          DirectedPowerUpCallback;
  PPO_FX_DIRECTED_POWER_DOWN_CALLBACK        DirectedPowerDownCallback;
  ULONG                                      DirectedFxTimeoutInSeconds;
  PVOID                                      DeviceContext;
  ULONG                                      ComponentCount;
  PO_FX_COMPONENT_V2                         Components[ANYSIZE_ARRAY];
} PO_FX_DEVICE_V3, *PPO_FX_DEVICE_V3;

Membri

Version

Numero di versione di questa struttura. Se il driver registrerà il supporto dell'alimentazione diretta con DFx, impostare questo membro su PO_FX_VERSION_V3.

Flags

Controlla se i dispositivi figlio diretti e i dispositivi figlio di alimentazione possono rifiutare esplicitamente Directed PoFx.

I valori dei flag possibili includono:

Bandiera Descrizione
PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL Consente ai dispositivi figlio diretti di questo dispositivo di supportare facoltativamente Directed PoFx. Se non è impostato, tutti gli elementi figlio diretti devono supportare Direct PoFx per questo dispositivo per supportare completamente Directed PoFx.
PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL Consente ai dispositivi figlio di alimentazione di questo dispositivo di supportare facoltativamente Directed PoFx. Se non specificato, tutti gli elementi figlio di alimentazione devono supportare Directed PoFx per questo dispositivo per supportare completamente Directed PoFx.
PO_FX_DEVICE_FLAG_DFX_CHILDREN_OPTIONAL Imposta sia PO_FX_DEVICE_FLAG_DIRECT_CHILDREN_OPTIONAL che PO_FX_DEVICE_FLAG_POWER_CHILDREN_OPTIONAL
PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME Forza PoFx a impedire che il S0-IRP venga completato prima del D0-IRP in caso di ripresa da uno stato del sistema, ad esempio ibernazione o sospensione. Si escludono a vicenda con PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME.
PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME Forza PoFx a consentire il completamento del S0-IRP prima del D0-IRP in caso di ripresa da uno stato del sistema, ad esempio ibernazione o sospensione. Si escludono a vicenda con PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME.

ComponentActiveConditionCallback

Puntatore al ComponentActiveConditionCallback routine di callback implementata dal driver di dispositivo.

ComponentIdleConditionCallback

Puntatore al ComponentIdleConditionCallback routine di callback implementata dal driver di dispositivo.

ComponentIdleStateCallback

Puntatore al ComponentIdleStateCallback routine di callback implementata dal driver di dispositivo.

DevicePowerRequiredCallback

Puntatore al DevicePowerRequiredCallback routine di callback implementata dal driver di dispositivo.

DevicePowerNotRequiredCallback

Puntatore al DevicePowerNotRequiredCallback routine di callback implementata dal driver di dispositivo.

PowerControlCallback

Puntatore al PowerControlCallback routine di callback implementata dal driver di dispositivo.

DirectedPowerUpCallback

Puntatore alla routine di callback PO_FX_DIRECTED_POWER_UP_CALLBACK implementata dal driver di dispositivo. Un dispositivo può fornire solo i callback DirectedPower* durante la registrazione per PoFx. Non è necessario implementare il resto dei callback PoFx.

DirectedPowerDownCallback

Puntatore alla routine di callback PO_FX_DIRECTED_POWER_DOWN_CALLBACK implementata dal driver di dispositivo.

DirectedFxTimeoutInSeconds

Fornisce un suggerimento al framework che specifica un timeout consigliato in secondi in cui il dispositivo deve essere inattiva dopo che l'attività software non è più presente. Il valore predefinito è 2 minuti.

DeviceContext

Puntatore a un contesto di dispositivo allocato dal chiamante. Questo puntatore viene passato come parametro a ogni funzione di callback implementata dal driver a cui punta questa struttura. Il driver di dispositivo usa questo contesto per archiviare informazioni sullo stato di alimentazione corrente del dispositivo. Questo contesto è opaco per PoFx.

ComponentCount

Numero di elementi nella matrice componenti di. Inoltre, questo membro specifica il numero di componenti nel dispositivo.

Components[ANYSIZE_ARRAY]

Questo membro è il primo elemento di una matrice di uno o più elementi PO_FX_COMPONENT_V2. Se la matrice contiene più elementi, gli elementi aggiuntivi seguono immediatamente la struttura PO_FX_DEVICE_V2. La matrice contiene un elemento per ogni componente nel dispositivo. Lo stato di alimentazione Fx di ogni componente può essere controllato indipendentemente dagli stati di alimentazione Fx degli altri componenti nel dispositivo. La costante ANYSIZE_ARRAY viene definita come 1 nel file di intestazione Ntdef.h.

Osservazioni

Per registrare un dispositivo con PoFx, un driver chiama la routine PoFxRegisterDevice e fornisce, come parametro, un puntatore a una struttura PO_FX_DEVICE che descrive il dispositivo. Per usare PoFx ma non DFx, eseguire la registrazione con PoFx usando PO_FX_DEVICE_V2 struttura o PO_FX_DEVICE_V3 struttura.

Ogni elemento nella matrice Components descrive gli attributi di stato di alimentazione di un componente nel dispositivo. Ogni componente nel dispositivo viene identificato dal relativo indice di matrice Components. Routine come PoFxActivateComponent e PoFxCompleteIdleCondition usare l'indice di matrice di un componente per identificare il componente.

Un driver di dispositivo non è necessario per implementare tutte e otto le routine di callback. Il driver può impostare un puntatore a funzione nella struttura PO_FX_DEVICE su NULL se il driver non implementa la routine di callback corrispondente. Tuttavia, è necessario implementare alcune routine di callback. In particolare, se uno o più componenti in un dispositivo hanno più di uno stato Fx, il driver deve implementare ComponentIdleStateCallback, ComponentActiveConditionCallbacke Routine ComponentIdleConditionCallback. In caso contrario, la registrazione del dispositivo non riesce e PoFxRegisterDevice restituisce STATUS_INVALID_PARAMETER.

Se un driver non fornisce uno dei PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME o PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME il sistema eseguirà il fallback alla configurazione predefinita della piattaforma. La configurazione predefinita è PO_FX_DEVICE_FLAG_ENABLE_FAST_RESUME per le piattaforme x86/x64 e PO_FX_DEVICE_FLAG_DISABLE_FAST_RESUME per le piattaforme ARM32/ARM64. Questi flag vengono rispettati solo per Win11 22000+ e vengono ignorati automaticamente per le versioni precedenti. Per i driver WDF questi flag possono essere forniti usando il campo PoFxDeviceFlags di WDF_POWER_FRAMEWORK_SETTINGS.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1903
intestazione wdm.h

Vedere anche

/windows-hardware/drivers/kernel/introduction-to-the-directed-power-management-framework

ComponentActiveConditionCallback

ComponentIdleConditionCallback

ComponentIdleStateCallback

DevicePowerNotRequiredCallback

DevicePowerRequiredCallback

PO_FX_COMPONENT

PoFxActivateComponent

PoFxCompleteIdleCondition

PoFxRegisterDevice

PowerControlCallback