Suspensi selektif di driver USB (WDF)

Driver fungsi USB mendukung deteksi diam runtime dengan menerapkan suspensi selektif USB. Berikut adalah konten untuk pengembang driver tentang cara menerapkan penangguhan selektif pada driver USB yang didasarkan pada Windows® Driver Foundation (WDF).

Tentang penangguhan selektif

Suspensi selektif adalah kemampuan untuk mematikan dan kemudian melanjutkan perangkat USB menganggur sementara komputer yang terpasang tetap dalam status kerja (S0). Untuk pengoperasian hemat energi—terutama pada PC seluler—semua perangkat dan driver USB harus mendukung penangguhan selektif. Mematikan perangkat saat diam, tetapi sementara sistem tetap dalam status S0, memiliki keuntungan signifikan berikut:

  • Penangguhan selektif menghemat daya.
  • Penangguhan selektif dapat membantu mengurangi faktor lingkungan seperti beban termal dan kebisingan.

Jika perangkat keras perangkat Anda dapat mati saat diam, driver harus mendukung fitur ini. Dukungan penangguhan selektif dalam driver USB yang didasarkan pada Windows® Driver Foundation (WDF) memerlukan paling banyak beberapa panggilan balik tambahan di luar yang diperlukan untuk dukungan dasar Plug and Play.

Setiap driver fungsi untuk perangkat USB harus menerapkan manajemen daya agresif yang menangguhkan perangkat diam saat sistem berjalan. Topik ini menjelaskan cara menerapkan penangguhan selektif dalam driver berbasis WDF. Jika Anda tidak terbiasa dengan WDF, lihat Windows Driver Kit (WDK) dan Mengembangkan Driver dengan Windows Driver Foundation.

Perangkat USB mendukung deteksi diam runtime melalui penangguhan selektif USB. Penangguhan selektif memungkinkan perangkat diam dimasukkan ke dalam status ditangguhkan tanpa memengaruhi perangkat lain yang terhubung ke hub yang sama atau—dalam kasus perangkat multifungsi—tanpa memengaruhi fungsi lain di perangkat. Ketika semua perangkat atau fungsi telah ditangguhkan, seluruh hub atau perangkat multifungsi dapat dimatikan.

Dari perspektif perangkat keras, penangguhan selektif adalah status fisik pada port USB. Ketika semua fungsi yang dilampirkan ke port menganggur, port dapat memasukkan penangguhan selektif.

Agar sesuai dengan spesifikasi USB, semua perangkat USB harus mendukung penangguhan selektif. Ketika bus USB diam, perangkat harus dapat mematikan. Driver hub USB yang disediakan Microsoft menerapkan penangguhan selektif di tingkat perangkat keras.

Driver fungsi USB harus menerapkan penangguhan selektif untuk fungsi perangkat individual mereka melalui WDF, yang berkomunikasi dengan driver bus dan mengelola permintaan kontrol I/O perangkat yang menangguhkan dan melanjutkan fungsi perangkat. WDF memungkinkan driver mode kernel dan mode pengguna untuk mendukung penangguhan selektif.

Detail kode penangguhan selektif USB driver fungsi bergantung pada apakah driver berjalan dalam mode pengguna atau mode kernel. Pertimbangkan panduan ini:

  • Gunakan kerangka kerja driver mode pengguna (UMDF) untuk mengimplementasikan driver USB jika memungkinkan. Driver mode pengguna lebih kecil kemungkinannya untuk merusak data sistem dan lebih mudah di-debug daripada driver mode kernel.
  • Gunakan kerangka kerja driver mode kernel (KMDF) hanya jika driver mengalirkan data melalui titik akhir isochronous atau memerlukan fitur atau sumber daya lain yang hanya tersedia dalam mode kernel.

Kepemilikan kebijakan daya, antrean I/O, dan penangguhan selektif

Pemilik kebijakan daya (PPO) untuk tumpukan perangkat adalah driver yang menentukan status daya mana perangkat harus berada pada waktu tertentu. Hanya satu driver di setiap tumpukan perangkat yang dapat menjadi PPO. Driver fungsi biasanya adalah PPO untuk perangkatnya.

Jika driver USB Anda mendukung penangguhan selektif dan berlapis di atas PPO di tumpukan perangkatnya, driver tidak boleh menggunakan antrean yang dikelola daya. Ini berlaku untuk driver UMDF dan KMDF. Jika permintaan tiba untuk antrean yang dikelola daya saat perangkat ditangguhkan, seluruh tumpukan perangkat dapat mengulur waktu.

Gambar 1 menunjukkan alur permintaan I/O ke driver USB melalui antrean I/O-nya.

Diagram alur permintaan ke driver USB WDF.

Dalam gambar, permintaan tiba untuk driver USB. Kerangka kerja menambahkan permintaan ke antrean yang sesuai.

Jika antrean tidak dikelola daya, kerangka kerja menyajikan permintaan ke driver sesuai dengan jenis pengiriman yang dikonfigurasi driver untuk antrean (berurutan, paralel, atau manual). Driver kemudian menangani permintaan.

Jika antrean dikelola daya dan perangkat tidak ditangguhkan, kerangka kerja menyajikan permintaan ke driver sesuai dengan jenis pengiriman yang dikonfigurasi.

Namun, jika perangkat ditangguhkan, tindakan kerangka kerja bergantung pada apakah driver adalah PPO untuk tumpukan perangkat. Jika driver adalah PPO, kerangka kerja berkomunikasi dengan driver induk USB untuk menyalakan perangkat. Setelah perangkat dilanjutkan, kerangka kerja menyajikan permintaan ke driver.

Jika driver bukan PPO, kerangka kerja tidak mengambil tindakan lebih lanjut karena hanya PPO yang dapat melanjutkan perangkat. Permintaan tetap dalam antrean. Tumpukan perangkat menumpuk jika PPO tidak menerima permintaan apa pun yang menyebabkannya melanjutkan perangkat.

Di bagian ini

Topik Deskripsi
Suspensi selektif di driver UMDF Topik ini menjelaskan bagaimana driver fungsi UMDF mendukung penangguhan selektif USB.
Suspensi selektif di driver fungsi USB KMDF Topik ini menjelaskan bagaimana driver fungsi KMDF mendukung penangguhan selektif USB.