我需要一个所有插入USB设备的列表,并让用户选择一个让控制台应用程序接收USB设备发送的任何数据.
然后,我可以开始使用我的程序中的数据.
我不想使用库,只有标准的C++函数,程序应该在Windows 98中使用.
Han*_*ant 22
这是论坛和编程Q + A网站中一个非常持久的问题.从来没有幸福的结局.USB中的B表示总线.这是计算机硬件设计中的术语,用于描述电子设备交换数据的电接口.它与您机器内的PCI(快速)总线的作用完全相同.由于它首先是电气规范,因此USB支持非常多种类型的设备.从无线网络适配器,调制解调器,闪存卡到茶壶加热器的任何东西.几乎没有哪种设备能够很好地处理需要非常大带宽的设备,比如视频适配器.
USB规范有一个非常优雅的协议规范,描述了设备如何共享总线以及它们如何交换数据.然而,该协议规范根本没有描述数据的格式,它只是定义了能够传递大块字节的概念.设备本身取决于这些字节的含义.
在机器端,您需要软件来解释这些字节并使机器对它们做一些有趣的事情.这需要设备驱动程序.就像您的视频卡和网络接口卡需要设备驱动程序一样.显然,视频驱动程序与NIC驱动程序非常不同.USB驱动程序也是如此,几乎没有什么共性.
如果你想编写类似USB设备的软件,那么你需要在它们仍然有共同点的层面上编写它.这是在USB控制器级别,您可以编写一个过滤器驱动程序,将自身注入USB驱动程序堆栈并查看控制器和设备驱动程序之间的I/O请求数据包.类似于,例如,窥探TCP/IP流量的winpcap过滤器驱动程序.虽然看起来没有什么有趣的东西,你会盯着来回传递的字节blob.这是一个比winpcap更大的问题,至少它看到字节飞行的意思记录在RFC的某处.USB不是这种情况,制造USB设备的公司通常也是设备驱动器供应商.他们保持内部格式没有记录.
编写过滤器驱动程序需要非常高级的技能,有很多痛点.就像在犯一个简单错误时崩溃操作系统一样.最近Windows驱动程序模型也有相当大的变化,USB驱动程序已经进入第3环(用户模式)以保持操作系统稳定.
要开始使用,请下载Windows WDK(又名"DDK")并阅读Walter Oney的书籍.最好全部.
这里有一些可以帮助您开始的东西:
并大声疾呼更新一个不是上个世纪的操作系统。我听说 Linux 对 USB 有很好的支持。