署名されたドライバーがあり、C#(Vistaおよび7 64ビットを対象)を使用して特定のUSBデバイス用にプログラムでインストールする必要があります。
DIFx API内でDriverPackagePreinstall関数を非常に簡単に使用できることがわかりました( P / Invokeの方法は次のとおりです)。デバイスをUSBに接続する前に呼び出すことで、Windowsはドライバーをデバイスに関連付けることができます。検出されました。
ドライバーをプリインストールせずにデバイスをUSBに接続すると、問題が発生します。そのデバイスに別のドライバーがインストールされている可能性があります(1つのテストPCで、汎用ドライバーがインストールされており、デバイスがデバイスマネージャーの[その他のデバイス]の下に表示されていることがわかりました)。
この問題を解決しようとすると、これまで、SetupDiGetClassDevs、SetupDiEnumDeviceInfo、およびSetupDiGetDeviceRegistryProperty関数を使用してデバイスが存在することを検出し、VIDとPID(ベンダーと製品識別子)でデバイスを識別できました。デバイスのSP_DEVINFO_DATAができたので、 InstallSelectedDriver関数を呼び出す必要があると思いますね。はいの場合、その関数をP / Invokeする方法(pinvoke.netで見つかりません)と、デバイスにインストールするドライバーを指定して使用する方法(INFパスがある場合)を教えてください。 ?