Fungsi WdfDeviceGetSystemPowerAction (wdfdevice.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfDeviceGetSystemPowerAction mengembalikan tindakan daya sistem, jika ada, yang saat ini terjadi untuk komputer.

Sintaks

POWER_ACTION WdfDeviceGetSystemPowerAction(
  [in] WDFDEVICE Device
);

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja.

Nilai kembali

WdfDeviceGetSystemPowerAction mengembalikan nilai enumerator jenis POWER_ACTION. Nilai menunjukkan tindakan daya sistem yang saat ini terjadi untuk komputer. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini. Enumerasi POWER_ACTION didefinisikan dalam wdm.h.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Mulai WDF versi 1.31/2.31 (disebut sebagai "v31"), WdfDeviceGetSystemPowerAction telah diperbarui untuk melaporkan tindakan daya sistem secara lebih akurat ketika perangkat adalah pemilik kebijakan daya. Driver perlu dikompresi ulang dengan v31 atau yang lebih baru untuk mendapatkan perilaku baru berikut:

  • Jika perangkat memasuki atau keluar dari D0 karena S0 Diam (lihat WdfDeviceAssignS0IdleSettings) saat transisi daya sistem yang tidak terkait sedang berlangsung, WdfDeviceGetSystemPowerAction mungkin mengembalikan PowerActionSleep. Ini diperbaiki di v31 dan sekarang mengembalikan PowerActionNone.

  • Ketika sistem bangun dari Hybrid Sleep (tidur dengan file hibernasi), sebelum v31, WdfDeviceGetSystemPowerAction selalu mengembalikan PowerActionHibernate. Ini diperbaiki dalam v31 dan sekarang mengembalikan:

    • PowerActionSleep jika bangun tanpa kehilangan daya, yang berarti sistem tetap berada di S3
    • PowerActionHibernate jika bangun setelah kehilangan daya, yang berarti sistem dilanjutkan dari file hibernasi

Metode WdfDeviceGetSystemPowerAction memungkinkan driver untuk menentukan apakah transisi daya perangkat terjadi karena perangkat menganggur (atau bangun), atau karena seluruh komputer memasuki (atau meninggalkan) status daya rendah.

Driver harus memanggil WdfDeviceGetSystemPowerAction hanya dari fungsi panggilan balik peristiwa yang dipanggil kerangka kerja ketika perangkat memasuki status daya rendah atau kembali ke status kerjanya.

Nilai yang dikembalikan WdfDeviceGetSystemPowerAction bergantung pada situasi berikut:

  • Jika komputer memasuki status daya rendah saat driver memanggil WdfDeviceGetSystemPowerAction, metode mengembalikan alasan komputer memasuki status daya rendah. Misalnya, metode mengembalikan PowerActionSleep jika komputer memasuki status daya rendah S1, S2, atau S3.
  • Jika komputer kembali ke status kerjanya (S0) dari status daya rendah ketika driver memanggil WdfDeviceGetSystemPowerAction, metode mengembalikan alasan komputer memasuki status daya rendah. Misalnya, metode mengembalikan PowerActionSleep jika komputer meninggalkan status daya rendah S1, S2, atau S3.
  • Jika komputer menyala (setelah dimatikan) ketika driver memanggil WdfDeviceGetSystemPowerAction, metode mengembalikan PowerActionNone.
  • Jika perangkat memasuki status diam berdaya rendah atau kembali ke status kerjanya (D0) ketika driver memanggil WdfDeviceGetSystemPowerAction, sementara sistem lainnya tetap pada status kerjanya (S0), metode mengembalikan PowerActionNone.
  • Jika komputer dan perangkat berada dalam status kerjanya ketika driver memanggil WdfDeviceGetSystemPowerAction, metode mengembalikan PowerActionNone.
Untuk informasi selengkapnya tentang status berdaya rendah, lihat Perangkat Memasuki Status Low-Power.

Contoh

Contoh kode berikut memperoleh aktivitas transisi daya yang saat ini terjadi untuk komputer.

POWER_ACTION SysPowerAction;

SysPowerAction = WdfDeviceGetSystemPowerAction(device);

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1.9
Versi UMDF minimum 2.0
Header wdfdevice.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)