问题标签 [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.

0 投票
2 回答
5572 浏览

windows - WDK8 - winusb.h 在哪里?

我正在尝试在我的项目中使用 WinUSB。我正在关注的指南是http://msdn.microsoft.com/en-us/library/ff540174.aspx。本文告诉我包含以下文件:

文件windows.hsetupapi.hstrsafe.h是在 中找到的C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include

文件usb100.hC:\Program Files (x86)\Windows Kits\8.0\Include\shared.

和文件stdio.htchar.h被发现在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include.

根据http://msdn.microsoft.com/en-us/library/windows/hardware/hh450839(v=vs.85).aspx,winusb.h 位于 WDK8 的 Include\um 文件夹中,但是在安装 WDK8 之后使用预下载和下载方法三遍,文件不存在。我假设Include\um他们指的是C:\Program Files (x86)\Windows Kits\8.0\Include\um. 我也搜索了我的系统,但找不到winusb.h任何地方。

winapifamily.h根据我链接的第二个 msdn 页面,我也找不到哪个包含在winusb.h.

我在 Windows 7 x64 上,安装了 WDK8 和 VC++ Express。

0 投票
1 回答
738 浏览

winusb - WDK, winusb, installing usb drivers for all ports

Every time I insert my USB device in a new port, the OS keep asking me to provide a driver and this is quite annoying since this is the same device. I read some similar posts over internet but I don't understands quite sure how my device should present itself to Windows XP and get the driver automatically after it has installed once.

Perhaps this is about serial number in descriptor (which in my case is missing since I've read this needs to be absolutely unique and this falls in another problem)?

0 投票
1 回答
953 浏览

windows - winUSB 错误(可能是 .inf 问题)

我真的很感谢winUSB的一些帮助。我遵循了 msdn 网站中列出的所有步骤

http://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/hardware/ff540174(v=vs.85).aspx

我尝试使用 Visual Studio 2010 在 Windows 7 上运行它。即使它编译没有错误,我也无法传递函数 SetupDiEnumDeviceInfo,并且它出错(我认为是错误 #259)。我不知道如何传递这个错误。

但是,我不确定该过程中的几个步骤:

  1. msdn 与“软件包的签名目录文件。此文件是在 x64 版本上安装 WinUSB 所必需的”谈什么?什么是签名目录包?我该如何设置?
  2. 它还谈到了制作一些目录(例如,c:\UsbDevice)以将 .inf 文件放在那里!但是我的VS项目怎么知道我指向c:\UsbDevice,它怎么知道“.inf”文件的名字应该是什么?我应该怎么称呼.inf文件?以及如何指向项目给它?
  3. 在 .inf 文件中有两个 GUID 编号。我可以通过设备管理器获取类 GUID 编号。但是如何设置设备接口 GUID?请帮忙。我得到的错误是否可能是因为我没有正确设置以下项目之一?

谢谢,
--鲁迪

0 投票
1 回答
2404 浏览

c++ - 查找我的 Windows PC 上可用的 USB 端口列表

我进行了很多搜索,但无法找到查询的答案。我想知道 PC 中有多少个 USB 端口可用,即对于串行端口,我们有“COM1”和“COM2”。我的电脑(windows7)包含 8 个 USB 端口,我需要找到端口列表以及它们是否被使用。

我尝试使用 WMI 查询但没有结果,因为它只提供了连接设备和 USB 集线器的详细信息。

使用 Win DDK,它将显示每个 HUB 可用的所有端口,但有趣的是,这与我从外部看到的不同。Win DDK 将给出每个集线器可寻址的端口数量,而不是从外部可见的端口的确切数量。任何 C 或 C++ 代码都会有很大帮助。

理想的结果是这样的:

0 投票
0 回答
1096 浏览

visual-c++ - 将 WinUSB 与 USB 设备模拟器一起使用

我正在开发 USB 客户端应用程序,并希望使用 WinUSB 函数来读取和写入 USB 通道。我也想用WinDDK自带的usbsamp驱动和SoftUSBLoopback.dll来实现USB设备的模拟端。我已按照说明(WinUSB (Winusb.sys ) 安装)将 usbsamp“Intel 82930 USB 测试板”驱动程序 (usbsamp.sys) 更新为 WinUSB (winusb.sys) 驱动程序,以便我可以在我的客户端应用程序中使用它。我已经修改了我的 inf 文件(如下所示),并且更新成功完成,但是当我调用 WinUsb_Initialize 时,它​​总是返回 0。问候,Janusz

0 投票
0 回答
1161 浏览

.net - 使用 PInvoke 在 .NET 中进行 WinUSB 异步调用

我用 USB 编程了一个微控制器,并使用 WinUSB 将它连接到 PC。我能够在 c++ 和 VB.NET 中使用 pinvoke 与同步(阻塞,重叠 = NULL)调用与我的 uC 通信。我刚刚在 c++ 中进行了异步调用,但我不知道如何在 .NET 中对其进行编码,还有另一个我不确定的问题:

问题 1:在 c++ 中,我最初尝试使用 IO Completion Callback Objects 进行异步调用,但是当我调用 WinUSB 读取它时返回一个错误,即异步 IO 已在文件句柄(HANDLE hDevice)上进行,CreateThreadpoolIo 不会使用 WinUSB 句柄( PWINUSB_INTERFACE_HANDLE hWinUsbHandle)。我的猜测是 WinUSB 将此文件句柄用于 IO,所以我不能。我最终使用等待回调对象让它工作。它现在正在工作,我只想澄清我所做的是正确的用法。

我有点困惑的部分是 CreateThreadpoolWait 调用。起初我认为这是像 MSDN 中的其他示例一样创建一个线程池,但是我认为现在它只是一个在默认线程池上运行的对象。此外,objConext 是用于将调用与其回调同步的变量,即回调中的 PVOID Context 指向 objConext。

这是c代码片段:

问题2:如何将上述转换为.NET?到目前为止,这是我的猜测:

编辑:我打算发布作为答案,但我没有足够的街头信誉

好吧,我有办法将代码转换为 .NET。我设法将所有 API 函数转换为 PInvoke,然后替换了 .NET 中内置的那些,除了一对。代码可以工作,但必须注意变量的声明位置,因为 GC 会在进行回调之前清理它们。此外,必须仔细分配和销毁上下文。例如,如果没有分配正确大小的内存,则可能会清理上下文结构中的数组,这很容易理解。

由于这些原因,将句柄引用保留在 USB 中每个管道的对象中并重用它们可能更有益,因为在前一个管道完成之前无法对同一个管道进行多次调用。如果这样做了,那么您可以对上下文执行相同的操作,并避免为上下文分配和销毁内存。例如,可以在回调中的等待指针上使用字典:

虽然我还没有真正找到问题 1 的答案:无论这是否是“正确”的做法,但它似乎表现得相当不错。以下是主要代码片段:

主要 API DLL 导入

我通过连续接收数据并同时运行GC来测试这些功能的GC保护,如果收集到东西,程序会崩溃。

警告:这里没有很多清理代码,请查看 MSDN 中的 c 代码以了解如何正确执行此操作。我认为面向对象的方法可能最好让句柄保持活动状态并实现 IDIsposable 以在完成后进行清理。

有人对开源 DLL 感兴趣吗?:P

0 投票
1 回答
5280 浏览

wix - 为针对 windows8 64 位操作系统的 WinUSB 驱动程序包安装编写自定义 INF

我有一个简单的用户模式 ​​USB 驱动程序,可以在 Windows XP 32 位、Windows 7 32 和 64 位以及 Windows 8 32 位中正常安装和工作。但由于某种原因无法在 Windows 8 64 位中正确安装。我使用的 inf 文件如下所示:

我收到类似“安装驱动程序包时遇到错误”的错误

0 投票
5 回答
10060 浏览

sony - SONY SmartWatch 固件下载实用程序

要将示例固件下载到 Smartwatch,需要哪些软件?它可能包括 dfu-util 和 WinUSB 驱动程序。

我尝试了 WinUSB 1.2.6 和 dfu-util,但它说:

并且上传 f/w 的命令失败。

我想知道 dfu-util 和 WinUSB 的版本不匹配。

因此,我认为如果您提供正确的网址,我们可以下载正确的版本,这将非常有帮助。也没有关于安装驱动程序和上传/下载示例的详细说明。

0 投票
1 回答
2664 浏览

visual-c++ - winusb_initialize 返回 false

我使用中兴 USB 调制解调器设备。我的设备安装到 Ports 类(驱动程序是 usbser.sys)。我遵循了 msdn 示例“如何使用 WinUSB 函数访问 USB 设备”。一切都很好,直到我调用函数 winusb_initialize。它返回 false 并带有 getlasterror 87 即 ERROR_INVALID PARAMETER。我在“ http://www.microchip.com/forums/m653017-print.aspx ”上找到了解决方案,但它没有帮助.当我尝试更改 x86 文件夹中的 winusb.inf 文件时,即使我已以管理员身份登录,计算机仍显示访问被拒绝。请帮助我。

提前致谢

0 投票
1 回答
3032 浏览

c - 在设备固件中支持 WinUSB

我正在尝试将 USB 设备设置为在连接到 Windows 8 机器时自动使用 WinUSB 作为驱动程序,如此处所述

它说:

为了让 USB 驱动程序堆栈知道设备支持扩展功能描述符,设备必须定义存储在字符串索引 0xEE 处的 OS 字符串描述符。

我的意思是我需要在内存位置 0xEE 创建一个包含描述符的结构。我将如何在 C 中解决这个问题?

这是我尝试过的:

但是编译器不喜欢这样,抱怨数据定义没有类型。有没有办法在C中做到这一点?我是否正确理解了这篇文章?

任何帮助将不胜感激。