狙い
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 デバイスのハードウェア リセットを実行する一般的な推奨方法はありますか? または、上記の問題を解決する方法はありますか?