项目安装期间安装驱动程序

时间:2012-02-22 16:29:28

标签: .net-3.5 c#-3.0 driver

我正在尝试在程序安装过程中以编程方式安装驱动器。我尝试了几件事,但似乎都没有安装我的驱动程序。

我尝试过的基于Google / Stack搜索的内容:

方法1:

设置属性:[DllImport("DIFxAPI.dll", CharSet = CharSet.Auto, SetLastError = true)]

result = DriverPackagePreinstall(tempPath + "umpusbXP.inf", Flags);

if (result != 0)
MessageBox.Show("Driver 'umpusbXP.inf' installation failed.");

其中Flags已设置为

的各种组合
//0x00000010 
Int32 DRIVER_PACKAGE_LEGACY_MODE = 16;
//0x00000004
Int32 DRIVER_PACKAGE_FORCE = 4;
//0x00000008
Int32 DRIVER_PACKAGE_ONLY_IF_DEVICE_PRESENT = 8;

似乎不起作用。它将返回各种错误,其中一些我能够在互联网上找到意义,其他错误。最常见的是0xE0000304 ERROR_INVALID_CATALOG_DATA => no cat(我发现at)其他错误的数字不在该文件中或我能找到的任何其他地方。

方法2:

设置属性:

[DllImport("Setupapi.dll", EntryPoint = "InstallHinfSection", CallingConvention = CallingConvention.StdCall)]
            public static extern void InstallHinfSection(
                [In] IntPtr hwnd,
                [In] IntPtr ModuleHandle,
                [In, MarshalAs(UnmanagedType.LPWStr)] string CmdLineBuffer,
                int nCmdShow);

然后使用方法

InstallHinfSection(IntPtr.Zero, IntPtr.Zero, tempPath + "umpusbXP.inf", 0);

此方法返回void,因此很难从中获取任何信息。不用说它没有安装驱动程序。

方法3:

设置属性:

[DllImport("setupapi.dll")]
public static extern bool SetupCopyOEMInf(

    string SourceInfFileName,
    string OEMSourceMediaLocation,
    OemSourceMediaType OEMSourceMediaType,
    OemCopyStyle CopyStyle,
    string DestinationInfFileName,
    int DestinationInfFileNameSize,
    ref int RequiredSize,
    string DestinationInfFileNameComponent

    );

然后使用此方法

string output ="";
int size = 0;
SetupCopyOEMInf(tempPath + "umpusbXP.inf", null, OemSourceMediaType.SPOST_PATH, OemCopyStyle.SP_COPY_OEMINF_CATALOG_ONLY, null, 0, ref size, output);

我尽量使用这些方法,但文档阅读起来很棘手。我一直在检查我的setupapi.log文件是否有错误,但没有显示。一个人应该如何安装驱动程序?

0 个答案:

没有答案