Как развернуть драйвер на основе INF? - PullRequest
19 голосов
/ 24 марта 2009

Я бы хотел развернуть USB-драйвер на основе .inf с помощью моего установщика.

Я полагаю, что .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.");
        }
    }
}

Ответы [ 2 ]

8 голосов
/ 24 марта 2009

Я бы начал с чтения SetupAPI и DIFx . Набор драйверов Windows включает образцов обоих, включая модуль слияния на основе DIFx и библиотеку WiX на основе DIFx. Источник для утилиты командной строки devcon , основанной на SetupAPI, также включен в примеры WDK.

0 голосов
/ 24 марта 2009

Вы можете попробовать попросить оболочку установить его для вас:

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

Но я на 100% уверен, что есть лучший способ ...

...