Bagikan melalui


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:

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