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.
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) |