- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想知道是否有人可以提供帮助,这是一个专业问题。
我有一个应用程序需要读取和分析多个 USB 设备(不是同时,它们每个都在单独的测试中运行,理论上可以在不同的机器上运行)。
每个 USB 设备都基于 USB HID 类,由不同的公司制造,这些 USB 设备都不是为在 PC 上运行而设计的,而是用于不同的平台,但是为了测试设备客户已请求从 PC 运行测试应用程序。
一些设备将启动,被 windows 识别,windows 将使用内置在 windows 中的通用 HID 类驱动程序正确地初始化和启动它们,然后设备将开始发送要测试的数据的正确数据包。
一些设备将启动,被窗口识别,这些窗口将尝试启动它们,但无法完全初始化它们,使它们处于半初始化状态。这很好,因为我可以使用我的 beagle 协议(protocol)分析器从正版平台捕获初始化数据包,然后使用 LibUSBDotNet 库复制初始化序列中的剩余数据包并让它们开始正确发送数据包。
我遇到的问题是一个特定的设备(虽然还有一些我还没有测试过,所以很可能其中一个也可能出现同样的问题)。问题是 Windows HID 类驱动程序识别设备并尝试初始化并启动它,这在一种方式之后起作用并且设备开始发送数据。
问题是发送的数据与发送到正版平台的数据不同(仅包含完整数据的一个子集)。就好像 Windows 已将设备初始化为不同的模式。
当我使用 USB 协议(protocol)分析器从 PC 和正版平台捕获初始化数据包时,我看到 Windows 正在发送一些稍微不同的初始化数据包。一旦 Windows 已经启动设备,使用 LibUSBDotNet 重新发送正确的数据包似乎没有效果。
我的问题是我需要阻止 Windows 尝试使用标准 HID 类驱动程序初始化设备,我尝试在设备管理器中删除驱动程序但它仍然初始化它(并且驱动程序在设备管理器中神奇地重新分配)。我已经做了一些调查,有可能的替代方案:
最佳答案
您使用 libusb-win32 作为过滤器驱动程序;也就是说,为您的设备分配并加载了 HidUsb 设备驱动程序,然后 libusb-win32 驱动程序加载在顶部,让您可以畅通无阻地访问硬件。
如果您不希望 HidUsb(或任何其他类驱动程序)“代表您”执行任何通信,只需将 libusb-win32 关联为 设备驱动程序 与您的硬件。为此,您必须创建一个 .INF 文件,将其与每个 USB 设备的 VID/PID/修订版相关联。如果我没记错的话,libusb-win32 甚至附带了一个实用程序来生成此类 .INF 文件。
如果您安装此 .INF 文件,例如与 PnpUtil.exe
(在 Vista 或更高版本上可用),您可能仍会遇到问题,尽管您比通用 HID 驱动程序更匹配,但仍选择 HID 驱动程序。
通用 HID 驱动程序通过它们的兼容 ID(即通过 USB 接口(interface)类)匹配设备,而您将通过硬件 ID(具有更高优先级)进行匹配。但是,Windows 可能会优先考虑其他方面,例如您的驱动程序未签名。阅读:How Windows Selects Drivers
幸运的是,即使在这种情况下,使用自生成证书(使用 CertUtil.exe
、 MakeCat.exe
和 SignTool.exe
)签署驱动程序也不是太困难。
关于windows - 用自定义驱动程序替换 Windows USB 类驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061895/
为什么我可以在控制台 window.window.window.window 中执行此操作并无限追加 .window 并返回 DOM 窗口? 最佳答案 因为 window 对象有一个指向它自身的 wi
Windows管理员用户和系统用户之间有什么权限区别吗? 有些时候,我必须将 cmd 窗口提升到系统权限才能删除一些文件。这可能是因为系统用户锁定了文件,或者系统用户可能具有更高的访问权限,我希望找出
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
Windows 服务和 Windows 进程之间的区别是什么? 最佳答案 服务是真正的 Windows 进程,没有区别。服务的唯一特殊之处在于它由操作系统启动并在单独的 session 中运行。一个独
我有一个 Windows 网络 (peer-2-peer) 以及 Active Directory,我需要记录向服务器发送任何类型打印的用户的名称。我想编写一个程序来记录他们的用户名和/或他们各自的
当我让一个 Windows 服务尝试安装另一个 Windows 服务时遇到问题。 具体来说,我有一个 TeamCity 代理在 Windows 2008 AWS 实例上为我运行测试。这些测试是用 Ja
我创建了一个应用程序来接收广播的 Windows 消息,效果很好。当我把它变成一个服务、安装它并启动服务时,该服务没有收到消息。 最佳答案 服务可能必须被授予访问桌面的权限。从服务属性、“登录”选项卡
我正在使用 Delphi 2010 编写应用程序。我希望在 Windows 启动时启动我的应用程序。我需要它在最新版本的 Windows XP、7.0 和最新的服务器中工作。 将其存储在以下关键工作下
我想开发一个适用于所有三个版本的 Windows XP、Vista 和 7 的应用程序。该应用程序允许人们选择要打开的文件,并允许他们在某些操作后保存文件。三个版本的 Windows 中的每一个都有不
对于\Windows\中的文件类型与\Windows\System32 中的文件类型是否有标准约定? 我正在开发一个 SDK,其中包含各种 DLL、帮助程序 exe 和 Windows 服务 exe。
要求是,必须在 WINDOWS7 机器上配置自动登录,但是这个自动登录应该等待(即延迟)直到另一个 Windows 服务发出继续自动登录的信号。 我使用了自定义凭据提供程序,它在其中等待另一个 Win
很抱歉,这不是一个大问题,而是更多的帮助人们解决这些特定问题的方法。我正在解决的问题要求使用串行I/O,但主要在Windows CE 6.0下运行。但是,最近有人问我是否也可以在Windows下运行该
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
不幸的是 SC 命令在 W2000 上还不可用,所以我不能使用它。 我正在尝试检查服务是否在 W2000 服务器上运行,如果它没有运行,脚本应该能够启动该服务。 如何在 Windows 2000 上执
如何在登录到 Windows 之前启动 Windows 窗体应用程序?是否可以在登录到 Windows 之前启动 Windows 窗体应用程序?如果不是,我是否有机会在登录前启动 Windows 服务
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我想在 XML 文件中区分 Windows XP 和 Windows 7。我想我会在 XML 中为它使用一个环境变量。 但是我找不到在 Windows 中定义的任何系统环境变量来提供此信息。 我看到了
有谁知道我可以在注册表中的哪个位置检查机器上是否安装了这些应用程序: Windows 通讯录 Windows 联系人 最佳答案 来自 Microsoft:我知道它说的是 win 95,但 reg 是一
我正在尝试从我的 Windows 服务器调用放置在远程 Windows 服务器上的批处理文件。我在远程服务器上安装了 freeSSHd。我尝试使用 putty/plink 但没有结果。 我使用的命令语
( 大家好。我是 Windows 编程的新手,所以如果已经有人问过我,我提前道歉,我只是不知道要搜索什么,但这个问题一直让我发疯,我知道有人可能真的很容易回答这个问题。) 我的公司有一个在 Windo
我是一名优秀的程序员,十分优秀!