19

我想用我的安装程序部署一个基于 .inf 的 USB 驱动程序。

我猜 .inf 需要放在%SystemRoot%\inf.cat 中(我猜是 WHQL 认证?)和 .sys 文件。我该怎么处理这些?

编辑:已解决,感谢有用的答案。我能够 P/Invoke 该功能,所以我有一个运行以下代码的安装后操作:

namespace DriverPackageInstallAction
{
    static class Program
    {
        [DllImport("DIFXApi.dll", CharSet = CharSet.Unicode)]
        public static extern Int32 DriverPackagePreinstall(string DriverPackageInfPath, Int32 Flags);

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            DirectoryInfo assemblyDir = new DirectoryInfo(Application.ExecutablePath);
            DirectoryInfo installDir = assemblyDir.Parent;

            int result = DriverPackagePreinstall(installDir.FullName + @"\Driver\XYZ.inf", 0);
            if (result != 0)
                MessageBox.Show("Driver installation failed.");
        }
    }
}
4

2 回答 2

8

我将从阅读SetupAPIDIFx开始。Windows 驱动程序工具包包含两者的示例,包括基于 DIFx 的合并模块和基于 DIFx 的 WiX 库。基于 SetupAPI的命令行devcon实用程序的源代码也包含在 WDK 示例中。

于 2009-03-24T14:58:57.617 回答
0

您可以尝试要求 shell 为您安装它:

%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 YOUR_FILE.inf

但我100%肯定有更好的方法......

于 2009-03-24T14:40:07.427 回答