草庐IT

c++ - 访问 HID 顶级集合慢

简要说明:我的HID设备拥有许多顶级收藏。应用程序不断查询收集详细信息。瓶颈是-SetupDiGetClassDevs()似乎非常慢。详细说明:我的代码基本遵循MSrecommendations关于如何查找和获取HID集合的句柄。然后,我使用这个句柄获取相应的预解析数据,从中获取我需要的数据。目前,每当用户需要获取数据(例如按钮数量、轴最小值/最大值)时,我的代码都会执行此操作。这是一项缓慢的业务。探查器清楚地表明罪魁祸首是SetupDiGetClassDevs(),它似乎非常慢。不可能保存句柄(或者我认为),因为它可能会阻止系统进行更改,例如删除设备或重新排列设备。我仍然需要看看如果

c++ - HID设备(USB)详解

我将条形码扫描器连接到USB端口。我需要将模式从HID键盘更改为串行端口仿真(读取器被系统视为常规HID设备而不是HID系统键盘),以便将数据从扫描仪直接获取到我的应用程序中。到目前为止,一切都很好。问题是我需要知道VID和PID号才能找到我的设备。我知道这些值,但我想按名称查找我的设备。我找到了一个名为SimpleHIDWrite的程序:http://www.lvr.com/hidpage.htm当我启动程序时,我的设备有一个很好的描述“SymbolBarCodeScanner”。我试图通过自己获得这个名字-我使用了结构:HIDD_ATTRIBUTESHIDP_CAPSSP_DEVI

windows - windows如何唯一识别一个USB设备?

即使从USB设备提供的设备数据对于该品牌的所有设备都是通用的,Windows如何唯一地识别USB设备?换句话说,Windows可以区分同一型号的戴尔键盘的两个实例,而无需键盘提供任何唯一的序列号。初始化USB设备时windows搜索的独有数据字段是什么? 最佳答案 Windows使用DeviceInstanceID用于识别。正如您在文档中看到的那样,它包含一个设备部分和一个实例部分。设备部分取自USB设备。如何生成实例部分取决于总线驱动程序。总线驱动程序不能仅仅依赖从usb设备返回的信息。因为两个相同的设备会破坏系统-设备实例ID必

windows - I2C 到 FPGA 到 PCIe 到 HID

我们正在进行一项硬件设计,它采用触摸屏输入并通过I2C将它们传递到FPGA。FPGA将I2C数据转换为PCIe。PCIe将触摸屏数据传递给处理器。我想知道如何让Windows识别这个PCIe接口(interface)并像处理HID一样处理它。(人机接口(interface)设备)看起来HID通常是USB。Windows可以识别和使用PCIe吗?这需要自定义Windows驱动程序吗?我见过将I2C转换为USB的I2C转USBpSoC。我们正在尝试使用FPGA作为简​​化和整合I/O的中心点,但简化布局和部件的权衡可能会被定制PCIe驱动程序的软件开发工作所克服。

c++ - 是什么可以导致SetupDiGetClassDevs不返回任何设备接口(interface)? (Windows,C++)

我已经在这个问题上工作了一个多月了。我想做什么:获取无故障连接到系统的HID设备的列表。发生了什么:SetupDiGetClassDevs间歇性地不返回任何设备(针对HID设备进行过滤时),而仅返回所讨论的特定进程。同时运行相同调用的其他进程运行完美。无论我如何努力,我都无法在干净的项目中重现此问题。背景:我是在Unity3D(游戏引擎)下运行的输入系统的作者。我的一个客户在他的(大型)项目中遇到了操纵杆热插拔的问题。在他的游戏的标题屏幕上,一切正常进行。加载第一个游戏级别后,Windows会间歇性地(看似随机地)报告零个HID设备。只要仍然连接当前Controller,输入就可以正常

c++ - 如何获取蓝牙HID设备的MAC地址?

如何获取连接为HID设备的蓝牙设备的MAC地址?我有设备的句柄Handle=CreateFile(didetail->DevicePath,0,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,NULL);但我找不到如何获取MAC地址。C++;Windows 最佳答案 起初我打算说你应该将ipconfig/all的结果通过管道传输到一个文件中,但后来我发现了这个:http://www.codeguru.com/cpp/i-n/network/networkinformation/a

windows - 从 Windows 7 服务( session 0)读取 HID 设备时出现问题

我在Windows7的Session0服务下读取HID设备时遇到问题。在普通桌面用户下,我可以从设备上正常读取。但是,当我尝试在session0下使用重叠I/O读取它时,WaitForSingleObject()总是返回WAIT_TIMEOUT,并且ReadFile的缓冲区从不包含任何有效数据。这对我来说似乎是一个Session0隔离问题,但我找不到任何关于如何解决这个问题的信息。从HID设备读取在session0下是否不起作用?谢谢。 最佳答案 voidImpersonateConsoleSession(DWORDdwSessio

windows - 是否可以将 Windows 设置为在插入符合 HID 标准的 USB 设备时自动启动应用程序?

我有一个自定义的HID兼容USB设备。我想将Windows设置为在插入此设备时启动应用程序。这可以通过配置设置实现吗?或者我是否需要编写一个应用程序(例如,驻留在Windows启动时系统托盘中的应用程序)来检测设备何时插入?我知道我的佳能相机和诺基亚手机在插入时可以启动应用程序或自动播放,但它们不是HID设备。 最佳答案 您应该能够通过监视WMIWin32_DeviceChangeEvent或RegisterDeviceNotification来实现这一点。Win32_DeviceChangeEvent:http://msdn.mi

windows - 在 Windows 上读取原始 USB 输入

我有一个USBHID人机接口(interface)设备,当我按下按键时,它会向USB主机发送键码,但我找不到一个简单的程序来转储USB端口中的所有输入数据?(当然有源代码可用。USBlyzer可以做到,但它是共享软件) 最佳答案 查看libusb和#USBLib两者都是开源的。#USBLib是一个围绕多平台libusb的.net包装器。 关于windows-在Windows上读取原始USB输入,我们在StackOverflow上找到一个类似的问题: https

windows - 使用默认 HID 驱动程序时,应用程序忽略 USB 设备的传入数据包

我正在为团队中的通用USBHID设备编写控制软件,在Windows7上工作。由于我是实习生,我的可能性有限:软件必须在Windows上运行软件必须使用Windows提供的默认HID驱动程序我的问题是,无论我在使用HidUSB驱动程序时尝试访问设备(根据Zadig的说法),我的中断传输读取尝试总是导致超时,而设备实际上确实在发送数据。写入设备一直有效,无论我是否使用HIDAPI,是否使用libusb,只有读取失败。(这是一个原始设备atm,甚至还没有完成最终的数据包数据规范,目前它只是向主机发送一个ON或OFF字符串,写入设备会改变LED的状态,在7种颜色和关闭状态之间,这样肯定可以工作