问题标签 [winusb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 编译使用 WinUsb 的应用程序
我正在编写一个应用程序以使用 WinUsb.dll 与 USB 设备进行通信。这是一个用户模式库,它允许通过安装在内核中的驱动程序 winusb.sys 与设备进行通信。
我正在使用 Visual Studio 2008 用 C++ 编写这个应用程序。
在 Windows DDK 中可以找到标头 WinUsb.h,因此我添加了包含路径“D:\WinDDK\7100.0.0\inc\ddk”。然后我得到一个错误,即无法找到 WinUsb.h 包含的 Usb.h,Usb.h 也在 ddk 但在不同的目录中,所以我添加“D:\WinDDK\7100.0.0\inc\api”作为一个包含目录。
一旦我添加了该路径,那么一切都将进入厕所,我开始在 stdio.h 和其他一些奇怪的地方出现编译错误。
我真的不想使用 DDK 构建系统和编译器来简单地使用这个 DLL,这是我使用 WinUsb 而不是编写适当的驱动程序的主要原因之一。
有没有人使用 WinUsb.dll 和 Visual Studio 构建过应用程序?
asynchronous - 取消 WinUSB 异步控制传输
对于使用 WinUSB 的用户应用程序(不是驱动程序),我将 WinUsb_ControlTransfer 与重叠 I/O 结合使用来异步发送控制消息。是否可以取消异步操作?WinUsb_AbortPipe 适用于所有其他端点,但在传递控制端点时会给出“无效参数”错误(0x00 或 0x80 作为管道地址)。我还尝试了 CancelIo 和 CancelIoEx,但都在 WinUSB 句柄上给出了“无效句柄”错误。我能找到的唯一相关信息是http://www.winvistatips.com/winusb-bugchecks-t335323.html,但没有提供解决方案。这是不可能的吗?
windows - WinUSB 在非开发计算机上失败
下午好,
WinUSB 在我使用的开发计算机(Win XP SP3)上运行良好。我能够将新固件下载到赛普拉斯 FX2,然后在它“重新枚举”后连接到新的 USB 设备。但是,如果我在其他几台计算机(Win XP SP3、Win7 x64)上使用 WinUSB 驱动程序尝试了相同的代码,它们都返回错误“连接到系统的设备无法运行”。尝试使用 CreateFile 获取 USB 设备的句柄时。
devicePath 已成功找到,所以我不确定它为什么无法连接到设备。此外,设备管理器指出我的设备工作正常。我很好奇我在编译代码时是否遗漏了什么?我猜我的开发计算机上安装了其他计算机没有的东西?或者可能是电源设置,设备将进入睡眠状态(尽管我在每台计算机上都使用了电源选项但无济于事)。
有没有人有任何想法?我在 Visual Studio 2008 下编译,并在我测试过的计算机上安装了 Microsoft C++ 2008 Redistributable Package。
谢谢,
贾瓦
winusb - 使用 WinUSB WritePipe 时出现 ERROR_SEM_TIMEOUT
我经常在使用该功能时遇到ERROR_SEM_TIMEOUT
错误。WinUSB WritePipe
这似乎表明存在超时,但如果我等待一段时间再试一次,我将永远无法写入。我正在将 64 字节卡盘写入 USB 设备,并且通常没有问题。一旦我开始收到错误,我可能必须拔下 USB 并关闭我的应用程序,然后再重试。有人遇到过这个问题吗?
windows - 如何使用 WinUsb 实现多个并发应用程序访问
我们正在移植我们的 USB 设备 dll 以使用通用 WinUsb。但是,WinUsb 不支持多个并发应用程序访问同一设备(相同的 VID 和 PID)。我想知道是否有办法使用 WinUsb 实现这种并发访问?我阅读了有关过滤器驱动程序和服务的信息。1. 我不想使用过滤器驱动程序,因为据我了解,这必须通过 WHQL,我宁愿不走这条路。2.关于windows服务:我应该如何实现它?该服务是否应该获得对 WinUsb 的所有调用,并且如果不同的应用程序尝试访问同一设备,它将关闭与第一个应用程序的连接,打开一个新连接,然后再次返回?
在这种情况下,服务是正确的解决方案吗?除了我写的之外,还有其他方法可以实现解决方案吗?
谢谢。
windows - 多种架构,winusb 和 wix
我正在为包含 WinUSB 设备驱动程序的应用程序创建安装程序。我正在使用带有 difx 扩展的 WiX 3.5。根据WinUSB how-to,我可以创建一个适用于 x86、ia64 和 amd 架构的单个 inf 文件。但是,对于 WiX difx 扩展,我需要链接到特定于体系结构的 .wixlib。那么,有没有办法创建一个适用于所有架构的安装程序,或者我需要 3 个单独的安装程序,在这种情况下,单个 inf 文件是不必要的?
visual-c++ - 通过 USB 高速向主机传输数据
我正在通过 USB 连接与定制的实验室设备(小硬件)交谈。如何以最大速度从实验室设备获取数据?
主机是一台 Windows XP 机器,在 Visual Studio 中使用 libsub-win32 运行 c 代码。小硬件收集数据,大量数据。主机可以请求此数据,然后读取它。一切正常。困扰我的是速度,粗略估计为 1Mbit/s,与 USB2 支持的 480 Mbit/s 相差甚远。该设备至少应该能够以该速度向我发送数据。我几乎没有使用 USB 和 libusb-win32 的经验,但我尝试阅读它们。虽然我看不到在哪里以及如何更改任何 USB 通信设置。在规范中,高速巴士上似乎有一种叫做微框架的东西。我该如何使用它们?
我不一定要使用 libusb-win32 库。您还有其他建议吗?
当前实现的详细信息: 如上所述,我使用 libusb-win32 进行通信。所有初始化都是从下载中包含的一个小示例中复制的。
然后我(使用 usb_bulk_write(...) 和 usb_bulk_read(...))与实验室设备交谈,并说服它与我共享数据,它确实这样做了。它为我提供了 512 字节的数据。使用 usb_bulk_read(...) 读取每个这样的块。
编辑 2011 年 4 月 27 日: 看起来我正在使用全速,但不是高速。如何获得高速?我在 USB 描述符文件中得到了一些错误的参数吗?(是的,我用的是USB2.0,设备应该支持高速的。)
2011 年 5 月 17 日编辑: 我现在已经使用 winUSB 实现了通信(编写了一个 .inf 文件和 c++ 程序)。使用 WinUSB 的好处是它可以告诉我它是否正在尝试使用高速。确实如此,但我仍然没有超过 11+-2 Mbit/s。为什么?
根据 USB2.0 协议,计算机应该发送帧开始标记(每毫秒发送一次),我认为它正在这样做 - 因此是 11Mbit/s。但是当使用高速时,它说“高速使用'微帧',它长 125us(每毫秒 8 微帧)。通过连续 8 次重复每个帧号,高速 SOF 数据包中保持与 1ms 帧编号的对应关系微帧。” 我不太明白这一点,但没有足够频繁地发送微帧可能是问题所在?有懂协议的朋友请赐教!我想了解这个东西是如何工作的,不管我是否可以让它在我的电脑上工作。
6月15日编辑
已解决的问题:计算机端的任何更改都不会使通信速度超过预期(如果您不更改端点数量并且您确实有 USB2.0 连接)。这里的问题在于处理器代码以非常耗时的方式使用其内存区域。这使得这个问题成为一种非问题。感谢所有的指针和信息。我学到了很多关于 USB 的知识!
android - 如何为任何安卓设备安装 ADB 驱动程序?
我是一名安卓开发者。我有一部新的 HTC Inspire 4g 手机,但我不知道如何为其安装 USB 驱动程序。这是我的 android_winusb.inf 文件:
arduino - Arduino 的 WinUSB 驱动程序
我正在使用 Arduino 从网上读取数据并显示它。我可以使用提供的驱动程序轻松地将数据作为串行传递,因为它们识别 COM 端口,因此我可以将串行发送到 COM 端口。
但是,我想使用“真正的”USB 技术,以便可以像普通 USB 设备一样插入和拔出设备。我正在考虑使用WinUSB作为驱动程序。但是,USB 对我来说是全新的。是否有使用 WinUSB 和 Arduino(我有 Uno)的 .inf 文件?
缺乏这方面的信息让我觉得我做错了。
windows-installer - 在 XP 上安装 WinUSB 驱动程序失败(在 Win7 上工作正常)
我在 Windows XP(x86,Service Pack 3)上安装 WinUSB 驱动程序时遇到了困难。我遵循 Microsoft WinUSB 指南,使用 inf 文件、签名的 cat 文件(使用 Inf2cat 制作)和相关的 WinUSB 安装程序来创建签名的驱动程序包。在 Windows7 上一切正常,但在 XP 上安装失败。
inf文件如下:
XP 中的 setupapi 登录失败如下所示:
我正在努力找出 XP 出了什么问题。错误
“扫描文件队列时无法验证目录”和“未签名或未正确签名的文件”
对我来说毫无意义,因为驱动程序包已正确签名,并且可以在 Win7 上正确安装而没有警告。非常欢迎任何帮助
谢谢汤姆