Gambaran umum pengembangan aplikasi Windows untuk perangkat USB
Ringkasan:
- Panduan untuk memilih model pemrograman yang tepat
- Pengalaman pengembang aplikasi UWP dan aplikasi desktop
API penting:
Artikel ini menyediakan panduan untuk memutuskan apakah Anda harus menulis aplikasi UWP atau aplikasi desktop Windows untuk berkomunikasi dengan perangkat USB.
Windows menyediakan set API yang dapat Anda gunakan untuk menulis aplikasi yang berbicara dengan perangkat USB kustom. API melakukan tugas umum terkait USB seperti, menemukan perangkat, transfer data.
Perangkat kustom dalam konteks ini berarti, perangkat yang microsoftnya tidak menyediakan driver kelas dalam kotak. Sebagai gantinya, Anda dapat menginstal WinUSB (Winusb.sys) sebagai driver perangkat.
Memilih model pemrograman
Jika Anda menginstal Winusb.sys, berikut adalah opsi model pemrograman:
Aplikasi UWP untuk perangkat USB
Windows 8.1 menyediakan namespace Windows.Devices.Usb, yang tidak dapat digunakan di versi Windows yang lebih lama. Untuk sumber daya Microsoft Store lainnya, lihat dokumentasi Platform Windows Universal.
Aplikasi desktop Windows untuk perangkat USB
Sebelum Windows 8.1, aplikasi yang berkomunikasi melalui Winusb.sys, adalah aplikasi desktop yang ditulis dengan menggunakan WinUSB Functions. Pada Windows 8.1, SET API diperpanjang. Untuk informasi selengkapnya tentang pengembangan aplikasi Windows, lihat Mengembangkan untuk Windows.
Strategi untuk memilih model pemrograman terbaik tergantung pada berbagai faktor.
Apakah aplikasi Anda akan berkomunikasi dengan perangkat USB internal?
API terutama dirancang untuk mengakses perangkat periferal. API juga dapat mengakses perangkat USB internal PC. Namun akses ke perangkat USB internal PC dari aplikasi UWP terbatas pada aplikasi istimewa yang secara eksplisit dideklarasikan dalam metadata perangkat oleh OEM untuk PC tersebut.
Apakah aplikasi Anda akan berkomunikasi dengan titik akhir USB isochronous?
Jika aplikasi Anda mengirimkan data ke atau dari titik akhir perangkat yang isochronous, Anda harus menulis aplikasi desktop Windows. Di Windows 8.1, Fungsi WinUSB baru telah ditambahkan ke set API yang memungkinkan aplikasi desktop mengirim data ke dan menerima data dari titik akhir isochronous.
Apakah aplikasi Anda adalah jenis aplikasi "panel kontrol"?
Aplikasi UWP adalah aplikasi per pengguna dan tidak memiliki kemampuan untuk membuat perubahan di luar cakupan setiap aplikasi. Untuk jenis aplikasi ini, Anda harus menulis aplikasi desktop Windows.
Apakah kelas perangkat USB didukung oleh aplikasi UWP?
Tulis aplikasi UWP jika perangkat Anda milik salah satu kelas perangkat ini.
name:cdcControl, classId:02 * *
name:physical, classId:05 * *
name:personalHealthcare, classId:0f 00 00
name:activeSync, classId:ef 01 01
name:palmSync, classId:ef 01 02
name:deviceFirmwareUpdate, classId:fe 01 01
name:irda, classId:fe 02 00
name:measurement, classId:fe 03 *
name:vendorSpecific, classId:ff * *
Catatan
Jika perangkat Anda termasuk dalam kelas DeviceFirmwareUpdate, aplikasi Anda harus merupakan aplikasi istimewa.
Jika perangkat Anda bukan milik salah satu kelas perangkat sebelumnya, tulis aplikasi desktop Windows.
Persyaratan driver
Persyaratan driver | Aplikasi UWP | Aplikasi desktop Windows |
---|---|---|
Driver fungsi | Winusb.sys yang disediakan Microsoft (driver mode kernel). | Winusb.sys yang disediakan Microsoft (driver mode kernel). |
Filter driver | Jika ada driver filter, akses terbatas pada aplikasi istimewa. Aplikasi ini dinyatakan sebagai aplikasi istimewa dalam metadata perangkat oleh OEM. | Driver filter dapat hadir dalam tumpukan perangkat mode kernel selama tidak memblokir akses ke Winusb.sys. |
Sampel kode
Sampel | Aplikasi UWP | Aplikasi desktop Windows |
---|---|---|
Mulai menggunakan sampel ini |
|
Alat pengembangan
Alat pengembangan | Aplikasi UWP | Aplikasi desktop Windows |
---|---|---|
Lingkungan pengembang | Microsoft Visual Studio 2013 Microsoft Windows Software Development Kit (SDK) untuk Windows 8.1 |
Gunakan templat Aplikasi WinUSB yang disertakan dengan Visual Studio (Ultimate atau Professional) dan Windows Driver Kit (WDK) 8 atau yang lebih baru. Untuk transfer isochronous, Visual Studio 2013 dengan Windows Driver Kit (WDK) 8.1 atau yang lebih baru. |
Bahasa pemrograman | C#, VB.NET, C++, JavaScript | C/C++ |
Implementasi fitur
Skenario utama | Aplikasi UWP | Aplikasi desktop Windows |
---|---|---|
Penemuan perangkat | Gunakan namespace Windows.Devices.Enumeration untuk mendapatkan UsbDevice. | Gunakan SetupAPI dan WinUsb_Initialize untuk mendapatkan WINUSB_INTERFACE_HANDLE. |
Transfer kontrol USB | UsbSetupPacket UsbControlRequestType UsbDevice.SendControlInTransferAsync UsbDevice.SendControlOutTransferAsync |
WINUSB_SETUP_PACKET WinUsb_ControlTransfer |
Mendapatkan deskriptor USB | UsbDevice.DeviceDescriptor UsbConfiguration.Descriptors UsbInterface.Descriptors UsbEndpointDescriptor |
WinUsb_GetDescriptor |
Mengirim transfer massal USB | UsbBulkInPipe UsbBulkOutPipe |
WinUsb_ReadPipe WinUsb_WritePipe |
Mengirim transfer interupsi USB | UsbInterruptInPipe UsbInterruptOutPipe |
WinUsb_ReadPipe WinUsb_WritePipe |
Mengirim transfer usb isochronous | Tidak didukung. | WinUsb_ReadIsochPipe WinUsb_ReadIsochPipeAsap WinUsb_WriteIsochPipe WinUsb_WriteIsochPipeAsap |
Menutup perangkat | UsbDevice.Close | WinUsb_Free |
Dokumentasi
Dokumentasi | Aplikasi UWP | Aplikasi desktop Windows |
---|---|---|
Panduan pemrograman | Berbicara dengan perangkat USB, mulailah menyelesaikan | Cara Mengakses Perangkat USB dengan Menggunakan Fungsi WinUSB |
Referensi API | Windows.Devices.Usb | Fungsi WinUSB |