Manajemen Daya untuk Antrean I/O

Ketika kerangka kerja menerima permintaan I/O yang diarahkan ke salah satu perangkat driver Anda, kerangka kerja menempatkan permintaan dalam antrean I/O. Driver dapat memperoleh permintaan I/O dari antrean I/O dengan menyediakan penangan permintaan atau dengan melakukan polling antrean. Untuk informasi selengkapnya tentang antrean I/O, lihat Objek Antrean Kerangka Kerja.

Saat merancang driver, Anda harus mengelompokkan permintaan I/O yang akan diterima driver Anda menjadi dua kategori:

  1. Permintaan yang mengharuskan perangkat berada dalam status berfungsi (D0), termasuk:

    • Membaca atau menulis permintaan yang mengharuskan driver fungsi perangkat membaca data dari, atau menulis data ke, perangkat.
    • Kontrol perangkat meminta agar fungsi atau driver bus tidak dapat melayani tanpa mengakses perangkat.
  2. Permintaan yang tidak mengharuskan perangkat berada dalam status berfungsi (D0), termasuk:

    • Kontrol perangkat meminta agar fungsi atau driver bus dapat melayani tanpa mengakses perangkat.
    • Mungkin semua permintaan yang diterima driver filter.
    • Semua permintaan yang diterima semua driver dalam tumpukan driver, jika tumpukan mendukung perangkat khusus perangkat lunak yang tidak berkomunikasi dengan perangkat keras apa pun.

Kecuali Anda menulis driver filter, atau driver untuk tumpukan yang tidak berkomunikasi dengan perangkat keras, kemungkinan driver Anda akan menerima beberapa permintaan yang mengharuskan perangkat berada dalam status kerjanya, bersama dengan beberapa yang tidak.

Untuk mendukung kedua jenis permintaan ini, kerangka kerja menyediakan dua jenis antrean I/O: yang dikelola daya dan yang tidak. Saat driver Anda membuat setiap antrean I/O-nya, driver akan mengatur anggota PowerManaged dalam struktur WDF_IO_QUEUE_CONFIG antrean ke WdfTrue atau WdfFalse untuk menunjukkan salah satu hal berikut:

  • Jika driver Anda mengatur PowerManaged ke WdfTrue, antrean dikelola daya.

    Ketika permintaan I/O tersedia dalam antrean yang dikelola daya, kerangka kerja mengirimkan permintaan ke driver hanya jika perangkat dalam status berfungsi (D0). Oleh karena itu, setiap kali driver Anda menerima permintaan dari antrean yang dikelola daya, kerangka kerja menjamin bahwa perangkat tersedia. Jika perangkat tidak dalam status kerjanya, kerangka kerja menyimpan permintaan dalam antrean hingga perangkat tersedia.

    Jika perangkat dalam status daya rendah karena diam, dan jika kerangka kerja menempatkan permintaan I/O di salah satu antrean yang dikelola daya driver Anda, kerangka kerja meminta tumpukan driver untuk memulihkan perangkat ke keadaan kerjanya sebelum mengirimkan permintaan ke driver Anda.

    Jika perangkat dalam status daya rendah karena sistem tidak dalam status berfungsi (S0), dan jika kerangka kerja menempatkan permintaan I/O di salah satu antrean yang dikelola daya driver Anda, kerangka kerja menunggu sampai perangkat kembali ke status kerja (D0) dan kemudian mengirimkan permintaan ke driver Anda.

    Karena kerangka kerja tidak mengirimkan permintaan I/O dari antrean yang dikelola daya ke driver jika perangkat tidak dalam keadaan kerjanya, driver yang terletak di ataspemilik kebijakan dayadi tumpukan driver tidak boleh menggunakan antrean I/O yang dikelola daya. Jika driver yang terletak di atas pemilik kebijakan daya menggunakan antrean yang dikelola daya, dan jika perangkat dalam keadaan daya rendah, driver tidak menerima permintaan dan tidak dapat meneruskannya ke pemilik kebijakan daya. Oleh karena itu, pemilik kebijakan daya, yang mengontrol status daya perangkat, tidak membangunkan perangkat.

  • Jika driver Anda mengatur PowerManaged ke WdfFalse, antrean tidak dikelola daya.

    Ketika permintaan I/O tersedia dalam antrean yang tidak dikelola daya, kerangka kerja mengirimkan permintaan ke driver terlepas dari apakah perangkat dalam status berfungsi (D0). Jika Anda telah menyiapkan antrean sehingga hanya menerima permintaan yang tidak memerlukan akses perangkat, driver Anda dapat melayani setiap permintaan, bahkan jika perangkat tidak tersedia.

Untuk informasi selengkapnya tentang antrean I/O yang dikelola daya, lihat Menggunakan Antrean I/O Power-Managed.

Beberapa driver memerlukan kontrol langsung atas Plug and Play (PnP) dan operasi manajemen daya. Driver ini dapat menggunakan I/O yang dikelola sendiri. Untuk informasi selengkapnya, lihat Menggunakan I/O Self-Managed.