我正在使用TJvHidDeviceController类来检索HID设备信息。我已插入两个HID设备,但我正在尝试创建SP_DEVICE_INTERFACE_DETAIL_DATA_A结构的“DevicePath”,始终将设备路径设为“\”。所以我无法打开CreateFile函数。请帮我解决这个问题。我的操作系统win7。 谢谢大家。
答案 0 :(得分:2)
这是在猜测!
我能想到的一件事是:
TJvHidDeviceController使用A或W后缀调用Windows API调用。使用的结构是SP_DEVICE_INTERFACE_DETAIL_DATA_A,ANSI版本。现在,如果您使用Delphi 2009或更高版本,则例程将为SP_DEVICE_INTERFACE_DETAIL_DATA_W。大小是一样的,所以一切看起来都不错。但是存储的字符串将是USC2编码(WideChars)而不是ANSI编码 - >因此,在每个ANSI字符之后将有一个空字节。 TJvHidDeviceController可能使用类似StrPas的函数将字符数组转换回pascal字符串,因此,您只能看到第一个字符。
检查: 在填充结构的函数调用之后设置断点,并使用CPU窗口将内容作为内存转储查看。如果您看到每隔一个字节的ANSI字符和中间的空字节,您可以确认上述情况就是这种情况。
解决方案: