哪些类型的 USB 设备驱动程序可以在不支付 Microsoft 认证的情况下使用?
我想制作通过 USB 连接的硬件和软件。本文介绍如何使用 HID 设备配置文件。
我的问题:我可以使用哪些其他类型的配置文件?我的设备与驱动程序的用途有多接近?
具体来说:我想获得尽可能高的带宽——我正在制作一个高速数据记录器。例如,我可以使用某种网络摄像头驱动程序来获取高带宽流数据吗?(或者数据是否必须采用某种图像格式?)
谢谢
What types of USB device drivers can be used without paying for Microsoft certification?
To make it clear, you technically don't need to pay Microsoft anything to have USB device drivers working on a machine (they do need to be digitally signed, either through a CA or self-signed certificates).
My question: What other types of profiles exist that I could use? And how closely does my device have to resemble what the driver is meant for?
This MSDN page lists the USB device classes that Windows comes with drivers for out of the box:
You want to try to "match" your application to one of the above classes if you want to take advantage of the built-in drivers. However, both the Communications and HID device classes allow for full-duplex transfer of arbitrary data, so either one of those is suitable if you just want to send bytes back and forth.
Specifically: I want to achieve the highest possible bandwidth - I'm making a high speed data logger. Could I for example use some sort of webcam driver to get the high bandwidth stream data? (Or would the data have to then be in some sort of image format
How high-speed do you need it? If it is less than 64,000 bytes/second (which is actually already pretty fast for a vast array of data logging applications), then the HID class through full-speed USB works just fine. Otherwise, you may try using the Communications device class. (I have direct experience only with the HID device class, though).
Note that the speed of data transfer is not the only consideration you need to take into account. USB is a bus, so the total bus bandwidth is shared amongst all the devices connected to it. To help manage this, USB defines different types of transfers: interrupts, isochronous, and bulk.
The HID class uses interrupt transfers, while the Communications class generally uses bulk transfers. Interrupt transfers tend have a much shorter latency than bulk transfers, so this may be an important consideration.