struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS (wdfdevice.h)
[Berlaku untuk KMDF dan UMDF]
Struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS berisi informasi yang disediakan driver yang digunakan kerangka kerja saat perangkat diam dan sistem dalam status kerja sistem (S0).
typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS {
ULONG Size;
WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
DEVICE_POWER_STATE DxState;
ULONG IdleTimeout;
WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
WDF_TRI_STATE Enabled;
WDF_TRI_STATE PowerUpIdleDeviceOnSystemWake;
WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE IdleTimeoutType;
WDF_TRI_STATE ExcludeD3Cold;
} WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, *PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS;
Size
Ukuran, dalam byte, dari struktur ini.
IdleCaps
Enumerator berjenis WDF_POWER_POLICY_S0_IDLE_CAPABILITIES yang mengidentifikasi kemampuan perangkat untuk bangun sendiri setelah diatur ke status daya rendah, sementara sistem tetap dalam status bekerja (S0).
DxState
Enumerator jenis DEVICE_POWER_STATE yang mengidentifikasi status daya perangkat rendah yang akan dimasukkan perangkat setelah periode batas waktu diam berakhir. nilai DEVICE_POWER_STATE didefinisikan dalam wdm.h.
IdleTimeout
Jumlah waktu, dalam milidetik, bahwa perangkat akan tetap menganggur sebelum kerangka kerja menempatkannya dalam status daya rendah yang disediakan DxState. Untuk menggunakan nilai batas waktu diam default kerangka kerja, tentukan IdleTimeoutDefaultValue. Untuk informasi selengkapnya tentang kapan kerangka kerja menganggap perangkat menganggur, lihat Mendukung Power-Down Menganggur.
UserControlOfIdleSettings
Enumerator yang diketik WDF_POWER_POLICY_S0_IDLE_USER_CONTROL yang menunjukkan apakah pengguna memiliki kemampuan untuk memodifikasi pengaturan diam perangkat.
Enabled
Enumerator jenis WDF_TRI_STATE yang menunjukkan apakah perangkat akan dimatikan jika tetap menganggur dan saat daya sistem berada di S0. Anggota ini bisa memiliki salah satu nilai berikut:
WdfTrue - Daya mati diaktifkan.
WdfFalse - Mematikan dinonaktifkan.
WdfUseDefault - Pemadaman pada awalnya diaktifkan secara default; tetapi jika anggota UserControlOfIdleSettings diatur ke IdleAllowUserControl, pengaturan pengguna atau file INF driver akan menggantikan nilai awal.
Jika daya mati diaktifkan, perangkat memiliki kemampuan bangun, dan nilai batas waktu diam kedaluwarsa, kerangka kerja memanggil fungsi panggilan balik EvtDeviceArmWakeFromS0 driver sebelum perangkat memasuki status daya rendah.
PowerUpIdleDeviceOnSystemWake
Enumerator berjenis WDF_TRI_STATE yang menunjukkan apakah perangkat akan kembali ke status berfungsi (D0) ketika sistem kembali ke status kerjanya (S0). Anggota ini hanya berlaku jika driver menetapkan anggota IdleCaps ke IdleCannotWakeFromS0. Anggota PowerUpIdleDeviceOnSystemWake dapat memiliki salah satu nilai berikut:
WdfTrue - Jika perangkat dan sistem dalam keadaan daya rendah, perangkat kembali ke status kerjanya ketika sistem kembali ke keadaan kerjanya.
WdfFalse - Jika perangkat dan sistem dalam keadaan daya rendah, perangkat tetap dalam status daya rendah ketika sistem kembali ke status kerjanya.
WdfUseDefault - Nilai default yang digunakan kerangka kerja jika driver tidak menetapkan nilai yang berbeda. Nilai ini memiliki arti yang sama dengan WdfFalse.
Jika anggota PowerUpIdleDeviceOnSystemWake diatur ke WdfFalse atau WdfUseDefault, perangkat kembali ke status kerjanya hanya saat perangkat lunak mengakses perangkat, seperti saat aplikasi mengirim permintaan I/O ke perangkat. Untuk informasi selengkapnya, lihat Perangkat Kembali ke Status Kerjanya.
Anggota PowerUpIdleDeviceOnSystemWake tersedia di KMDF versi 1.9 dan yang lebih baru, dan mulai dari VERSI 2.0 UMDF.
IdleTimeoutType
Enumerator berjenis WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE yang menunjukkan bagaimana anggota IdleTimeout digunakan.
Anggota IdleTimeoutType tersedia di KMDF versi 1.11 dan yang lebih baru, dan mulai dari VERSI 2.0 UMDF. Lihat informasi tambahan dalam Keterangan.
ExcludeD3Cold
Enumerator berjenis WDF_TRI_STATE yang menunjukkan apakah status daya D3cold harus menjadi pilihan yang diizinkan untuk status daya rendah yang akan dimasukkan perangkat saat periode batas waktu diam berakhir. Anggota ExcludeD3Cold dapat memiliki salah satu nilai berikut:
WdfTrue - Kerangka kerja akan memindahkan perangkat ke D-state berdaya rendah saat periode batas waktu diam berakhir. Jika status D adalah D3, perangkat akan dipindahkan ke D3hot. Jika ExcludeD3Cold diatur ke WdfTrue, maka tidak ada transisi lebih lanjut dari D3hot ke D3cold yang akan diizinkan.
WdfFalse - Perangkat dapat memasuki status daya D3cold saat periode batas waktu diam berakhir, jika semua kriteria berikut terpenuhi:
- Anggota DxState dari struktur ini menentukan PowerDeviceD3 atau PowerDeviceMaximum.
- Firmware ACPI menunjukkan bahwa perangkat mendukung status daya D3cold.
- Jika driver yang ditentukan IdleCanWakeFromS0 atau IdleUsbSelectiveSuspend di anggota IdleCaps dari struktur ini, perangkat dapat merespons peristiwa bangun eksternal saat dalam status daya D3cold. Jika tidak, persyaratan ini tidak berlaku.
Include = machine.inf
Needs = PciD3ColdSupported
Jika tidak, nilai ini memiliki arti yang sama dengan WdfTrue.
Anggota ExcludeD3Cold tersedia mulai dari KMDF versi 1.11, serta mulai dari versi 2.0 UMDF, dan diabaikan dalam sistem operasi yang lebih lama dari Windows 8. Lihat informasi tambahan dalam Keterangan.
Struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS digunakan sebagai input ke WdfDeviceAssignS0IdleSettings.
Pertama kali driver memanggil WdfDeviceAssignS0IdleSettings, tindakan berikut terjadi:
- Kerangka kerja menyimpan nilai semua anggota struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS .
- Jika anggota UserControlOfIdleSettings diatur ke IdleAllowUserControl dan jika anggota Diaktifkan diatur ke WdfUseDefault, kerangka kerja membaca registri untuk mengetahui apakah pengguna telah mengaktifkan daya perangkat saat diam.
- Jika driver menentukan IdleUsbSelectiveSuspend untuk nilai anggota IdleCaps , driver harus melakukannya saat pertama kali memanggil WdfDeviceAssignS0IdleSettings, dan kemudian tidak dapat mengubah nilai tersebut.
- Jika driver menentukan IdleCanWakeFromS0 atau IdleCannotWakeFromS0 saat pertama kali memanggil WdfDeviceAssignS0IdleSettings, kemudian dapat memanggil WdfDeviceAssignS0IdleSettings lagi untuk mengubah nilai tersebut (tetapi tidak dapat mengubah nilai menjadi IdleUsbSelectiveSuspend).
Mulai dari KMDF 1.11 dan UMDF 2.0, driver KMDF dapat beralih antara IdleUsbSelectiveSuspend dan IdleCannotWakeFromS0 kapan saja.
Mulai dari Windows 8, mengatur anggota IdleTimeoutType ke SystemManagedIdleTimeout atau SystemManagedIdleTimeoutWithHint menyebabkan kerangka kerja mendaftar dengan kerangka kerja manajemen daya (PoFx).
Jika driver menerapkan dukungan status daya fungsional untuk perangkat multi-komponen, driver harus mengatur IdleTimeoutType ke DriverManagedIdleTimeout atau tidak memanggil WdfDeviceAssignS0IdleSettings sama sekali.
Untuk informasi selengkapnya, lihat Mendukung Status Daya Fungsi dan Gambaran Umum Power Management Framework.
Aturan berikut berlaku untuk nilai yang Anda tentukan untuk anggota DxState :
- Nilai tidak boleh PowerDeviceD0.
- Untuk perangkat USB, nilainya tidak boleh PowerDeviceD0 atau PowerDeviceD3.
- Jika Anda menentukan PowerDeviceMaximum, kerangka kerja menggunakan nilai yang disediakan driver untuk bus perangkat dalam anggota DeviceWake dari struktur WDF_DEVICE_POWER_CAPABILITIES .
- Jika nilai anggota IdleCaps adalah IdleCanWakeFromS0, Anda tidak dapat menentukan status daya perangkat yang lebih rendah dari status daya perangkat di anggota DeviceWake dari struktur WDF_DEVICE_POWER_CAPABILITIES driver bus. (Dengan kata lain, jika nilai DeviceWake driver bus adalah PowerDeviceD2, nilai DxState driver fungsi Anda tidak boleh PowerDeviceD3.)
Mulai dari KMDF 1.11 dan UMDF 2.0, perangkat yang mendukung daya diam dapat menggunakan anggota ExcludeD3Cold dari struktur ini untuk menentukan apakah status daya D3cold harus menjadi pilihan yang diizinkan untuk status daya perangkat rendah yang akan dimasukkan perangkat setelah periode batas waktu diam berakhir.
Untuk informasi tentang entri registri yang mengontrol kapabilitas diam perangkat, lihat Kontrol Pengguna Perilaku Menganggur dan Bangun Perangkat.
Untuk menginisialisasi struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS , driver Anda harus memanggil WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT.
Persyaratan | Nilai |
---|---|
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfdevice.h (termasuk Wdf.h) |