enumerasi WDF_POWER_POLICY_S0_IDLE_CAPABILITIES (wdfdevice.h)

[Berlaku untuk KMDF dan UMDF]

Enumerasi WDF_POWER_POLICY_S0_IDLE_CAPABILITIES mengidentifikasi kemampuan yang dapat didukung perangkat saat memasuki status berdaya rendah saat sedang diam.

Sintaks

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

Konstanta

 
IdleCapsInvalid
Nilai: 0
Hanya untuk penggunaan internal.
IdleCannotWakeFromS0
Perangkat tidak dapat membangunkan dirinya dari status daya rendah saat sistem dalam status berfungsi (S0).
IdleCanWakeFromS0
Perangkat dapat membangunkan dirinya dari status daya rendah saat sistem dalam status berfungsi (S0).
IdleUsbSelectiveSuspend
Perangkat terhubung ke bus USB dan mendukung penangguhan selektif USB. Gunakan nilai ini jika perangkat yang terhubung dengan USB Anda mendukung idling dan bangun sendiri saat komputer dalam keadaan berfungsi. Jika perangkat USB Anda hanya mendukung idling, gunakan IdleCannotWakeFromS0. (Driver untuk perangkat USB tidak boleh menentukan IdleCanWakeFromS0.) Lihat contoh kode di bagian Contoh berikut.

Untuk Windows XP, kerangka kerja mendukung penangguhan selektif USB hanya jika struktur USB_CONFIGURATION_DESCRIPTOR perangkat menunjukkan bahwa perangkat mendukung bangun jarak jauh. Untuk Windows Vista dan versi Windows yang lebih baru, kerangka kerja mendukung selektif USB menangguhkan apakah perangkat mendukung bangun jarak jauh atau tidak.

Keterangan

Enumerasi WDF_POWER_POLICY_S0_IDLE_CAPABILITIES digunakan dalam struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS.

Contoh

Contoh kode berikut menunjukkan cara mengaktifkan dukungan diam untuk perangkat USB. Dalam setiap kasus, nilai pengembalian STATUS_POWER_STATE_INVALID berarti driver bus telah melaporkan bahwa perangkat tidak dapat bangun sendiri.

Contoh 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 {...}

Contoh 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 {...}

Persyaratan

Persyaratan Nilai
Versi KMDF minimum 1,0
Versi UMDF minimum 1.11
Header wdfdevice.h (termasuk Wdf.h)

Lihat juga

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS