Condividi tramite


enumerazione WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.h)

[Si applica a KMDF e UMDF]

L'enumerazione WDF_POWER_POLICY_S0_IDLE_CAPABILITIES identifica le funzionalità che un dispositivo può supportare quando entra in uno stato a basso consumo mentre è inattivo.

Sintassi

typedef enum _WDF_POWER_POLICY_S0_IDLE_CAPABILITIES {
  IdleCapsInvalid = 0,
  IdleCannotWakeFromS0,
  IdleCanWakeFromS0,
  IdleUsbSelectiveSuspend
} WDF_POWER_POLICY_S0_IDLE_CAPABILITIES;

Costanti

 
IdleCapsInvalid
Valore: 0
Solo per uso interno.
IdleCannotWakeFromS0
Il dispositivo non può riattivarsi da uno stato a basso consumo mentre il sistema è nello stato di funzionamento (S0).
IdleCanWakeFromS0
Il dispositivo può riattivarsi da uno stato a basso consumo mentre il sistema è nello stato di funzionamento (S0).
IdleUsbSelectiveSuspend
Il dispositivo è connesso a un bus USB e supporta la sospensione selettiva USB. Usa questo valore se il dispositivo connesso tramite USB supporta sia l'inattività che la riattivazione mentre il computer è nello stato di lavoro. Se il dispositivo USB supporta solo l'inattività, usare IdleCannotWakeFromS0. I driver per i dispositivi USB non devono specificare IdleCanWakeFromS0. Vedere gli esempi di codice nella sezione Esempi seguenti.

Per Windows XP, il framework supporta la sospensione selettiva USB solo se la struttura di USB_CONFIGURATION_DESCRIPTOR del dispositivo mostra che il dispositivo supporta la riattivazione remota. Per Windows Vista e versioni successive di Windows, il framework supporta la sospensione selettiva USB indipendentemente dal fatto che il dispositivo supporti o meno la riattivazione remota.

Commenti

L'enumerazione WDF_POWER_POLICY_S0_IDLE_CAPABILITIES viene utilizzata nella struttura WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .

Esempio

Gli esempi di codice seguenti illustrano come abilitare il supporto inattiva per un dispositivo USB. In ogni caso, il valore restituito STATUS_POWER_STATE_INVALID indica che il driver del bus ha segnalato che il dispositivo non può riattivarsi.

Esempio di KMDF

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&idleSettings,
                                           IdleUsbSelectSuspend);
status = WdfDeviceAssignS0IdleSettings(device,
                                       &idleSettings);
if (status == STATUS_POWER_STATE_INVALID){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    idleSettings.IdleCaps = IdleCannotWakeFromS0;
    status = WdfDeviceAssignS0IdleSettings(device,
                                           &IdleSettings);
    if (!NT_SUCCESS(status) {...}
 }
else {...}

Esempio di UMDF

hr = pIWDFDevice2->AssignS0IdleSettings(IdleUsbSelectSuspend,
                                        PowerDeviceD3,
                                        IDLEWAKE_TIMEOUT_MSEC,
                                        IdleAllowUserControl,
                                        WdfTrue);
if (hr == HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)){
    //
    // The device probably does not support wake. 
    // It might support idle without wake.
    //
    hr = pIWDFDevice2->AssignS0IdleSettings(IdleCannotWakeFromS0,
                                         PowerDeviceD3,
                                         IDLEWAKE_TIMEOUT_MSEC,
                                         IdleAllowUserControl,
                                         WdfTrue);
    if (!SUCCEEDED(hr)) {...}
}
else {...}

Requisiti

Requisito Valore
Versione KMDF minima 1,0
Versione UMDF minima 1.11
Intestazione wdfdevice.h (include Wdf.h)

Vedi anche

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS