繁体   English   中英

如何执行特定HID设备的硬件重置?

[英]How to perform a hardware reset of a specific HID device?

目的

使用Delphi应用程序执行特定USB加密狗ANT,HID设备的硬件重置。


1. CM_Request_Device_Eject函数尝试

我试图使用CM_Request_Device_Eject函数,它正确弹出我的设备,但在某些系统上不会再自动启动它。

这是我用于设备弹出的代码:

str := PChar(GetDeviceID(DeviceInfoData.DevInst));
status := CM_Locate_DevNodeA(dev, str, CM_LOCATE_DEVNODE_NORMAL);
status := CM_Request_Device_EjectA(dev, nil, '', 0, 0);

有没有办法确保我的设备在使用此功能后弹出后不会自动启动时启动?


2. SetupDiRestartDevices函数尝试

作为替代方案,我尝试使用SetupDiRestartDevices函数,这个正确地重置我的设备,但除了重置所有HID设备(如鼠标,键盘等),此功能需要管理员权限才能工作:

rslt1 := SetupDiRestartDevices(hDevInfo, DeviceInfoData);

如何使用此功能仅重置我的设备?


是否有通用的推荐方法来执行特定USB HID设备的硬件重置? 或者有办法解决上述任何问题吗?

硬复位不是你自己可以做的事情......要对某些设备进行硬复位,特定设备必须支持硬复位......硬复位方式因设备而异。 有些设备上有一个按钮可以进行硬重置。 有些需要一段代码。 大多数公司为特定设备发布了一组AT命令列表。

例如.. 这里是制造商为特定设备发布的at命令列表

在这种情况下, 可以帮助你...如果不保持谷歌搜索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM