我想在Windows安装程序在安装过程中安装第三方驱动程序的libusb。 我创造了这个安装与Visual Studio 2010。
我曾尝试过使用SETUPAPI和DifXAPI命令行安装此驱动程序,但没有任何反应。 我期待有一个窗口弹出,说明它是一个未签名驱动程序,你必须点击确定继续。 我有这个窗口弹出的唯一方法是,如果我用了一个C#控制台应用程序和的P / Invoke调用驱动程序从DifXApi(指向INF文件,它看起来就像是由INF-向导生成的)安装代码,以及需要项目为64(我需要这也为32位安装工作)来构建。 点击OK后司机从来没有安装。
此驱动程序正确安装的唯一方法是,如果我插上通过USB硬件,右键单击未知设备,并浏览到包含驱动程序DLL文件的,SYS文件的文件夹,和INF文件。 如何视窗弄清楚如何安装驱动程序?
INF文件具有驱动部分的32位/ 64位/安腾,但如何知道的Windows安装哪个部分,什么是Windows不同的方式来做,我在命令行?
我可以用下面的代码,其中安装在32位和64位Windows驱动程序infPath
是通向INF文件,以及devices
与USB设备相关联的所有设备ID的列表:
[DllImport("setupapi.dll")]
public static extern bool SetupCopyOEMInf(
string SourceInfFileName,
string OEMSourceMediaLocation,
int OEMSourceMediaType,
int CopyStyle,
string DestinationInfFileName,
int DestinationInfFileNameSize,
int RequiredSize,
string DestinationInfFileNameComponent
);
[DllImport("newdev.dll")]
public static extern bool UpdateDriverForPlugAndPlayDevices(
IntPtr hwndParent,
string HardwareId,
string FullInfPath,
uint InstallFlags,
bool bRebootRequired
);
[STAThread]
static void Main() {
if (SetupCopyOEMInf(infPath, null, 0, 0, null, 0, 0, null)) {
foreach (string device in devices) {
UpdateDriverForPlugAndPlayDevices(IntPtr.Zero, device, infPath, 0, false);
}
}
}