ドキュメントによると、C++ 関数CM_Locate_DevNodeA
とCM_Reenumerate_DevNode
ofは、デバイス マネージャーで変更されたハードウェアCfgMgr32.dll
のメニュー項目スキャンとプログラム的に同等である必要があります。
C# のマネージ コードについては、この質問に対する 2 番目の回答を参照してください。
しかし、ドキュメントとは対照的に、デバイス マネージャーの操作が機能する場合、プログラムによるアプローチは常に機能するとは限りません。これは私の場合です:
ユーザーはすでに USB デバイスに接続されています
ドライバーが見つかりません
私のインストーラーは、適切な INF ファイルを Windows/inf ディレクトリに追加します
CM_Reenumerate_DevNode
新しいドライバーのインストールは発生しませんデバイスマネージャーの「ハードウェア変更のスキャン」は、新しいドライバーでインストールを開始します