Driver sisi perangkat USB di Windows

Menjelaskan arsitektur tumpukan fungsi USB.

Pada perangkat USB, tumpukan fungsi USB mengacu pada sekelompok driver yang dijumlahkan oleh Plug and Play Manager, ketika ACPI membuat objek perangkat fisik perangkat USB (PDO).

Dalam satu perangkat konfigurasi, perangkat USB dapat menentukan satu atau beberapa antarmuka. Misalnya, Media Transfer Protocol (MTP) untuk mentransfer file ke dan dari perangkat. Perangkat USB komposit dapat mendukung beberapa antarmuka dalam satu konfigurasi. Tumpukan fungsi USB membuat PDO untuk setiap antarmuka dan PnP Manager memuat driver kelas yang membuat objek perangkat fungsi (FDO) untuk antarmuka tersebut.

Tumpukan fungsi USB dikonsepkan dalam gambar ini:

tumpukan fungsi usb.

Aplikasi dan Layanan

Driver kelas fungsi USB

Driver kelas fungsi USB mengimplementasikan fungsionalitas antarmuka tertentu (atau sekelompok antarmuka) pada perangkat USB. MTP dan IpOverUsb adalah contoh driver kelas yang disediakan sistem. Driver kelas dapat diimplementasikan murni sebagai driver mode kernel, atau mungkin merupakan layanan mode pengguna yang dipasangkan dengan driver kelas yang disediakan sistem GenericUSBFn.sys.

Driver kelas fungsi mengirim permintaan ke pengontrol dengan menggunakan driver kelas fungsi USB ke antarmuka pemrograman UFX.

Ekstensi kelas fungsi USB (UFX)

Ekstensi kelas fungsi USB (UFX) adalah ekstensi yang disediakan sistem untuk Kerangka Kerja Driver Mode Kernel (KMDF). USB adalah bus standar dan memiliki beberapa fungsionalitas dan kemampuan yang diperlukan. UFX bertanggung jawab untuk menerapkan logika fungsi USB yang umum untuk semua pengontrol fungsi USB dan menangani dan/atau mengirimkan permintaan dari driver kelas fungsi USB. Secara khusus, UFX menangani proses enumerasi perangkat dan pemrosesan transfer kontrol standar. Untuk melakukan beberapa operasi ini, UFX perlu mengetahui kemampuan bus. Kemampuan tersebut dilaporkan ke UFX ketika antarmuka ekstensi kelas dibuat.

UFX memaparkan IOCTL standar yang dapat digunakan lapisan atas (driver kelas fungsi USB dan layanan mode pengguna) untuk mengirim permintaan ke pengontrol. Selain itu, UFX memberi tahu lapisan atas tentang permintaan standar yang diterima dari host.

Driver klien fungsi USB

UFX menyediakan antarmuka abstrak yang bekerja secara konsisten di berbagai pengontrol. Namun, pengontrol memiliki kemampuan yang berbeda, dengan batasan seperti jumlah titik akhir, jenis titik akhir, daya rendah, bangun jarak jauh. Misalnya, pengontrol tertentu mendukung DMA, sementara yang lain tidak. Beberapa pengontrol mengimplementasikan aliran di perangkat keras sementara pengontrol lain mengharapkan driver untuk menangani aliran. Untuk alasan ini, hanya fungsionalitas umum yang ditangani di UFX. Transfer, manajemen daya, dukungan aliran, dan fitur lain yang bervariasi dari pengontrol ke pengontrol ditangani oleh driver klien.

Driver klien fungsi USB bertanggung jawab untuk menerapkan operasi khusus pengontrol. Ini termasuk menerapkan transfer data titik akhir, perubahan status perangkat USB (reset, tangguhkan, lanjutkan), deteksi lampirkan/lepaskan, deteksi port/pengisi daya. Driver klien juga bertanggung jawab untuk menangani manajemen daya, dan peristiwa PnP.

Driver klien fungsi ditulis sebagai driver Kernel-Mode Driver Framework (KMDF) dengan menggunakan driver kelas fungsi USB ke antarmuka pemrograman UFX.

Microsoft menyediakan driver klien fungsi dalam kotak (UfxChipidea.sys, Ufxsynopsys.sys) untuk pengontrol ChipIdea dan Sinopsi.

Driver filter usb yang lebih rendah

Driver filter usb yang lebih rendah mendukung deteksi pengisi daya jika pengontrol fungsi menggunakan Sinopsis dalam kotak dan driver ChipIdea. Driver filter mengelola pengisian daya USB mulai dari deteksi port USB. t harus menerbitkan GUID untuk setiap jenis pengisi daya yang didukungnya, dan daftar properti pengisi daya tersebut. Jika pengisi daya tertentu dapat dikonfigurasi, driver filter USB yang lebih rendah menentukan daftar PropertyID yang didukung dan jenis nilai yang sesuai yang dapat dikirim ke dalamnya, untuk mengonfigurasi pengisi daya. Driver juga memberi tahu tumpukan baterai ketika dapat mulai mengisi daya dan jumlah maksimum perangkat saat ini dapat menarik. Untuk driver klien selain Sinopsi dan driver ChipIdea, logika pengisian daya dapat diimplementasikan di driver klien.

Driver kelas fungsi mengirim permintaan ke UFX dengan menggunakan antarmuka Pemrograman untuk mendukung pengisi daya kepemilikan.