目的
使用 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 设备的硬件重置?或者有没有办法解决上述任何问题?