Цель
Выполните аппаратное обеспечение reset конкретного USB-ключа ANT, HID-устройства с приложением Delphi.
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);
Как я могу reset только мое устройство с этой функцией?
Вопрос
Существует ли общий рекомендуемый способ выполнения аппаратного обеспечения reset конкретного USB-устройства HID? Или есть способ решить любую из вышеуказанных проблем?