Gambaran umum pengembangan driver Windows untuk pengontrol host USB

Artikel ini menjelaskan dukungan dalam sistem operasi Windows, untuk mengembangkan driver pengontrol host Universal Serial Bus (USB) yang berkomunikasi dengan ekstensi pengontrol host USB yang disediakan Microsoft (UCX).

Jika Anda mengembangkan pengontrol host xHCI yang tidak sesuai dengan spesifikasi atau mengembangkan perangkat keras non-xHCI kustom (seperti pengontrol host virtual), Anda dapat menulis driver pengontrol host yang berkomunikasi dengan UCX. Misalnya, pertimbangkan dok nirkabel yang mendukung perangkat USB. PC berkomunikasi dengan perangkat USB melalui dok nirkabel dengan menggunakan USB melalui TCP sebagai transportasi.

Ekstensi pengontrol host USB (UCX)

Ekstensi pengontrol host USB adalah driver yang disediakan sistem (Ucx01000.sys). Driver ini diimplementasikan sebagai ekstensi kelas kerangka kerja dengan menggunakan antarmuka pemrograman Windows Driver Framework . Driver pengontrol host berfungsi sebagai driver klien ke ekstensi kelas tersebut. Sementara driver pengontrol host menangani operasi dan peristiwa perangkat keras, manajemen daya, dan peristiwa PnP, UCX berfungsi sebagai antarmuka abstrak yang mengantre permintaan ke driver pengontrol host, dan melakukan tugas lain.

UCX adalah salah satu driver sisi host USB di Windows. Ini dimuat sebagai FDO di tumpukan perangkat pengontrol host.

Driver pengontrol host USB

UCX dapat diperluas dan dirancang untuk mendukung berbagai driver pengontrol host. Windows menyediakan driver xHCI (Usbxhci.sys) yang menargetkan pengontrol host USB xHCI.

Driver pengontrol host adalah klien UCX, ditulis sebagai driver Kernel-Mode Driver Framework (KMDF).

Biner yang disediakan Microsoft

Untuk menulis driver pengontrol host, Anda memerlukan UCX (Ucx01000.sys) dan pustaka stub (Ucx01000.lib). Pustaka stub ada di Windows Driver Kit (WDK). Pustaka melakukan dua fungsi utama.

  • Terjemahkan panggilan yang dilakukan oleh driver pengontrol host dan teruskan hingga UCX.
  • Menyediakan dukungan untuk penerapan versi. Driver pengontrol host akan bekerja dengan UCX, hanya jika UCX memiliki nomor versi Utama yang sama dengan driver pengontrol host, dan nomor versi Minor yang sama atau lebih tinggi dengan driver pengontrol host.

Alat pengembangan

WDK berisi sumber daya yang diperlukan untuk pengembangan driver, seperti header, pustaka, alat, dan sampel.

Mengunduh kit dan alat untuk Windows

Mulai

Baca spesifikasi resmi yang menjelaskan perilaku yang diharapkan dari berbagai komponen (perangkat, pengontrol host, dan hub) arsitektur.

xHCI untuk Universal Serial Bus: Spesifikasi

Dokumen Universal Serial Bus Resmi

Memahami arsitektur UCX

Biasakan diri Anda dengan tumpukan driver USB yang disediakan Microsoft:

Driver sisi host USB di Windows

Arsitektur: Ekstensi pengontrol host USB (UCX)

Biasakan diri Anda dengan objek dan handel UCX

UCX memperluas fungsionalitas objek WDF untuk menentukan objek UCX khusus USB sendiri. Untuk detail selengkapnya tentang objek WDF, lihat Pengantar Objek Kerangka Kerja.

Untuk mengantrekan permintaan ke driver pengontrol host yang mendasar, UCX menggunakan objek ini. Untuk informasi selengkapnya, lihat objek dan handel UCX yang digunakan oleh driver pengontrol host.

Objek UCX Deskripsi
Objek pengontrol host (UCXCONTROLLER) Mewakili pengontrol host yang dibuat oleh driver pengontrol host. Driver hanya harus membuat satu objek pengontrol host per instans pengontrol host. Biasanya dibuat dalam panggilan balik EVT_WDF_DRIVER_DEVICE_ADD dengan memanggil metode UcxControllerCreate .
Objek hub akar (UCXROOTHUB) Mendapatkan dan mengontrol status port akar pengontrol host. Dibuat oleh driver pengontrol host biasanya dalam panggilan balik EVT_WDF_DRIVER_DEVICE_ADD dengan memanggil metode UcxRootHubCreate .
Objek perangkat USB (UCXUSBDEVICE) Mewakili perangkat USB fisik yang terhubung ke bus. Dibuat oleh driver pengontrol host biasanya dalam panggilan balik EVT_UCX_CONTROLLER_USBDEVICE_ADD dengan memanggil metode **UcxUsbDeviceCreate .
Objek titik akhir (UCXENDPOINT) Mewakili titik akhir pada objek perangkat USB. Dibuat oleh driver pengontrol host biasanya dalam panggilan balik EVT_UCX_USBDEVICE_DEFAULT_ENDPOINT_ADD atau EVT_UCX_USBDEVICE_ENDPOINT_ADD dengan memanggil metode **UcxEndpointCreate .
Objek aliran (UCXSTREAMS) Mewakili sejumlah pipa ke perangkat di satu titik akhir massal. Dibuat oleh driver pengontrol host biasanya dalam panggilan balik EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD dengan memanggil metode UcxStaticStreamsCreate .

Bagian dokumentasi

Fungsi panggilan balik hub akar dari driver pengontrol host

UCX menangani sebagian besar operasi yang terkait dengan hub akar. Ini memungkinkan driver hub USB untuk berinteraksi dengan hub akar dengan cara yang sama seperti berinteraksi dengan hub biasa. Driver pengontrol host dapat mendaftarkan fungsi panggilan baliknya.

Menangani permintaan I/O di driver pengontrol host USB

UCX melakukan triase blok permintaan USB masuk (URB), lalu meneruskannya ke antrean titik akhir yang benar.

Mengonfigurasi titik akhir USB di driver pengontrol host

Driver pengontrol host memainkan peran dalam manajemen antrean UCX yang terkait dengan titik akhirnya, dan dalam pemrograman titik akhir ke perangkat keras pengontrol.

Referensi ekstensi pengontrol host USB (UCX)

Memberikan spesifikasi untuk permintaan I/O, rutinitas dukungan, struktur, dan antarmuka yang digunakan oleh driver klien. Rutinitas dan struktur data terkait tersebut didefinisikan dalam header WDK.

UCX disebut sebagai ekstensi kelas kerangka kerja.

Driver pengontrol host disebut sebagai driver klien.