Mendukung Power-Down Menganggur

Beberapa perangkat dapat memasuki status daya rendah (Dx) saat sistem tetap dalam status berfungsi (S0). Mulai dari Windows 8, perangkat dapat beralih ke status daya fungsional berdaya rendah (Fx) sebelum memasuki status Dx. Untuk perangkat tersebut, kerangka kerja memulai menurunkan daya perangkat atau komponen setelah perangkat diam (tidak digunakan) untuk jumlah waktu yang telah ditentukan (dan dapat ditetapkan).

Beberapa perangkat ini juga dapat memicu sinyal bangun di bus saat mendeteksi peristiwa eksternal. Driver bus merespons sinyal ini, dan tumpukan driver memulihkan perangkat ke keadaan kerjanya. (Perangkat yang tidak mendeteksi peristiwa eksternal tetap dalam status daya rendah sampai kerangka kerja meminta driver bus untuk memulai pemulihan perangkat ke status kerjanya.)

Jika perangkat atau komponen Anda dapat dimatikan saat diam, fungsi panggilan balik EvtDriverDeviceAdd di pemilik kebijakan daya harus melakukan dua langkah berikut:

  1. Panggil WdfDeviceAssignS0IdleSettings untuk menentukan:

    • Status daya rendah yang akan dimasukkan perangkat
    • Jumlah waktu perangkat harus tetap menganggur sebelum status dayanya diturunkan
    • Apakah perangkat dapat mendeteksi peristiwa eksternal dan memicu sinyal bangun di bus
    • Apakah pengguna dapat mengontrol pengaturan diam perangkat
    • Apakah kemampuan daya mati diam perangkat diaktifkan atau dinonaktifkan
    • Apakah perangkat akan kembali ke status kerjanya (D0) ketika sistem kembali ke status kerjanya (S0)
    • Apakah nilai batas waktu diam untuk perangkat ditentukan oleh kerangka kerja manajemen daya (PoFx)
    • Apakah kerangka kerja dapat menempatkan perangkat dalam status daya D3cold saat periode batas waktu menganggur kedaluwarsa

    Untuk informasi selengkapnya tentang pengaturan ini, lihat struktur WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, serta Mendukung Status Daya Fungsi.

  2. Panggil WdfDeviceInitSetPowerPolicyEventCallbacks untuk mendaftarkan fungsi panggilan balik peristiwa berikut, jika Anda membutuhkannya untuk perangkat Anda:

Kondisi Menganggur

Kerangka kerja menganggap perangkat menganggur, dan mulai menghitung waktu diam, ketika semua kondisi berikut terpenuhi:

  • Tidak ada antrean yang dikelola daya yang dibuat untuk instans perangkat ini yang memiliki permintaan apa pun yang menunggu dalam antrean atau dikirim ke driver. Jika permintaan dikirim ke driver dan driver mengirimkannya ke target I/O, permintaan masih terkait dengan antrean. Perangkat tidak akan dianggap menganggur, kecuali driver menggunakan opsi kirim dan lupakan untuk mengirim permintaan. Permintaan dalam antrean yang tidak dikelola daya tidak dihitung terhadap perangkat diam.
  • Jika driver sebelumnya disebut WdfDeviceStopIdle, driver kemudian disebut WdfDeviceResumeIdle.
  • Jika pemilik kebijakan daya adalah sopir bus, tidak ada perangkat anak dari sopir bus yang berada di D0.

Jika driver Anda (atau pengguna) mengaktifkan daya diam untuk perangkat Anda, Anda mungkin harus menggunakan metode WdfDeviceStopIdle . Jika perangkat dalam status berfungsi (D0), metode ini mencegah perangkat menganggur hingga driver memanggil WdfDeviceResumeIdle. Jika perangkat dalam status daya rendah ketika driver memanggil WdfDeviceStopIdle, dan jika sistem dalam status berfungsi (S0), kerangka kerja meminta driver bus untuk memulihkan perangkat ke status kerja (D0). Setiap panggilan yang berhasil ke WdfDeviceStopIdle harus dicocokkan dengan panggilan ke WdfDeviceResumeIdle. Untuk informasi tentang menampilkan jumlah referensi daya di debugger, lihat Men-debug Kebocoran Referensi Daya di WDF.

Untuk informasi selengkapnya tentang kapan driver Anda mungkin harus memanggil WdfDeviceStopIdle, lihat halaman referensi metode.

Jika perangkat dapat membangunkan dirinya dari status daya rendah, driver untuk bus perangkat berpartisipasi dalam membangunkan perangkat. Driver bus biasanya menyediakan fungsi panggilan balik EvtDeviceEnableWakeAtBus dan EvtDeviceDisableWakeAtBus . Fungsi-fungsi ini melakukan apa pun yang diperlukan pada adaptor bus untuk mengaktifkan dan menonaktifkan kemampuan perangkat untuk bangun dari status daya rendah.

Untuk informasi tentang entri registri yang mengontrol kapabilitas diam perangkat, lihat Kontrol Pengguna Perilaku Menganggur dan Bangun Perangkat.