2011-12-19 9 views
3

私は署名付きドライバがあり、C#(Vistaおよび7 64ビットを対象とする)を使用して特定のUSBデバイスに対してプログラムでインストールする必要があります。特定のデバイス用の特定のドライバのプログラムによるインストール(プレインストールに失敗した場合)

DIFx API内でDriverPackagePreinstall関数を使用するのが非常に簡単でした(hereはP /呼び出し方法です)。デバイスをUSBに差し込む前に呼び出すと、Windowsはドライバをデバイスが検出されると、

ドライバがあらかじめインストールされていない状態でUSBにデバイスを接続すると問題が発生します。そのデバイス用に別のドライバがインストールされていることがあります(1台のテスト用PCに、汎用ドライバがインストールされており、そのデバイスがデバイスマネージャの「その他のデバイス」に表示されています)。

今までの私は、デバイスがSetupDiGetClassDevsを使用してあることがそのVIDとPID(ベンダーによってデバイスを識別するためにSetupDiEnumDeviceInfoSetupDiGetDeviceRegistryProperty機能を検出することができました、この問題を解決しようとすると、製品識別子)。今私は私のデバイスのSP_DEVINFO_DATAを持っていると私はInstallSelectedDriverの機能に電話しなければならないと思いますか?もしそうなら、その機能をP/Invokeする方法を教えてもらえますか(私はpinvoke.netで見つけることができません)、デバイスにインストールしたいドライバを指定する方法(INFパスがあると仮定) ?

答えて

3

hereの検索対象のサンプルが見つかりました。 InstallSelectedDriverのためのP /呼び出しは、として私の作品:私は同じ問題を抱えている

[DllImport("newdev.dll", SetLastError = true, CharSet = CharSet.Auto)] 
[return: MarshalAs(UnmanagedType.Bool)] 
protected static extern bool InstallSelectedDriver(
     IntPtr HwndParent, 
     IntPtr DeviceInfoSet, 
     string Reserved, 
     [MarshalAs(UnmanagedType.Bool)] bool Backup, 
     out UInt32 Reboot); 
+0

@Mauro_Ganswerは、しかし、あなたが提供されるリンクがダウンしているようです。おそらくあなたの答えに使用例を追加できますか? –

+0

彼はちょうどP/[InstallSelectedDriver](https://msdn.microsoft.com/en-us/library/windows/hardware/ff547654(v=vs.85).aspx)関数を呼び出します。 – Pupsik

関連する問題