我正在开发一个USB设备,它可以与一个应用程序对话。看起来,我们可能希望有一个Windows驱动程序,它为应用程序提供了一个更好的软件接口。(而不是让应用程序本身通过WinUSB向设备发送低级命令。)
在DLL中可以使用WinUSB吗?选择驱动程序模型来开发USB客户端驱动程序没有具体解决这个问题。
在这种情况下,我是否应该考虑编写基于UMDF或KMDF的驱动程序,或者调用WDM例程的混合驱动程序?
发布于 2016-08-25 19:10:50
使用WinUSB可能是正确的方法。您绝对可以在DLL中使用WinUSB。通常,您可以编写一个在另一个DLL中调用函数的DLL,而且winusb.dll没有什么特殊的地方可以阻止您这样做。另外,它已经在libusb和libusbp等其他项目中完成,它们编译成使用winusb.dll的DLL。
我还鼓励您将代码跨平台:不要直接从DLL调用WinUSB,而是使用USB抽象库(如libusb或libusbp )。即使您只想支持Windows,这些库的使用也比SetupAPI和WinUSB容易得多,因此应该可以节省开发时间。如果您希望代码在不同的操作系统上工作,它们也会节省大量时间。
我认为在这种情况下编写自己的UMDF或KMDF驱动程序的唯一原因是如果您需要WinUSB不支持的Windows堆栈的高级特性。例如,如果您需要将设备切换到不同的USB配置,或者使用电源管理做一些棘手的事情,或者允许多个应用程序同时使用该设备。如果您只想来回发送一些数据,那么WinUSB是一个很好的选择。
https://stackoverflow.com/questions/39152249
复制相似问题