Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Используйте примитивный драйвер для обработки и управления программным обеспечением, которое устанавливается с использованием INF-файлов, но не обязательно связано с конкретным аппаратным устройством.
Предпосылки и преимущества примитивных драйверов
До Windows 10 версии 1903 некоторые типы программного обеспечения, использующее установку на основе INF, но не обязательно привязаны к конкретному аппаратному устройству, не полностью поддерживаются ОС. Хотя эти части программного обеспечения использовали INF-файлы в качестве манифеста для установки, ОС не знала напрямую об этом сценарии и не поддерживала его в собственном коде.
Так как эти части программного обеспечения не были привязаны к аппаратному устройству, они будут устанавливаться на всю систему независимо от оборудования. В результате не было гарантии, что эти компоненты программного обеспечения были правильно установлены, удалены или обработаны при обновлении ОС.
Начиная с Windows 10 версии 1903 платформа Plug and Play обрабатывает и управляет этим типом пакета программного обеспечения в качестве сущности верхнего уровня, что приводит к повышению надежности и гарантированному правильному поведению такого программного обеспечения, особенно во время сценариев обновления и сброса ОС.
Типы программного обеспечения, использующие поддержку этой новой платформы, называются примитивными драйверами. Примитивные драйверы продолжают использовать установку на основе INF, а базовая платформа использует хранилище драйверов для отслеживания всех соответствующих файлов.
Базовая платформа Plug and Play затем корректно устанавливает, удаляет и поддерживает состояние драйвера при обновлении ОС.
Концептуально эти INF управляются по-разному. Ранее [DefaultInstall] (и часто [DefaultUninstall]) обрабатывались setupAPI в скрипте, где INF-файл использовался в качестве манифеста и SetupAPI выполнял инструкции в соответствующих разделах от имени вызывающего объекта.
Отмена внесённых изменений (для выполнения удаления) требует указания раздела INF, который осуществляет противоположный набор инструкций по сравнению с разделом установки. Однако примитивным драйверам, использующим INF, не требуется раздел удаления.
Примитивные драйверы используют те же API установки и удаления, что и драйверы устройств, где API удаления будет выполнять обратный набор операций в качестве операции установки, а действие установки или удаления пакета драйверов обработает эти разделы.
Требования INF для доступа к функциям примитивного драйвера
Раздел версии должен быть завершен так же, как драйверы PnP.
Директива поставщика должна быть заполнена.
Директива Class должна быть заполнена.
Директива ClassGuid должна быть заполнена.
Драйвер должен быть совместим с DCH.
Раздела [Производитель] быть не должно.
Разделы defaultInstall должны содержать архитектурные спецификации, и не должно быть неукрашенных версий.
Правильно: [DefaultInstall.NTamd64]
Неправильно: [DefaultInstall]
[DefaultUninstall] может не присутствовать в INF (см. устаревшую совместимость для исключения).
Примитивные драйверы, предназначенные только для Windows 10 версии 1903 и более поздних версий
Примитивные драйверы, предназначенные только для Windows 10 версии 1903 и более поздних версий, должны использовать DiInstallDriver и DiUninstallDriver для правильной установки и удаления программного обеспечения в хранилище драйверов или из хранилища драйверов.
Драйверы также должны использовать Dirid 13, чтобы правильно указать хранилище драйверов как место назначения для установки.
Наследуемая совместимость
Хотя [DefaultUninstall] запрещено в примитивных драйверах, исключение создается для обеспечения совместимости ОС нижнего уровня. В Windows представлена директива INF, которая приводит к тому, что версия ОС, поддерживающая примитивные драйверы, игнорирует раздел [DefaultUninstall]. Если пакет драйверов должен поддерживать версии ОС нижнего уровня, включите следующий синтаксис, чтобы убедиться, что платформа будет соответствующим образом обрабатывать такие случаи:
[DefaultUninstall.NTamd64]
LegacyUninstall=1
Разделы [DefaultInstall] и [DefaultUninstall] по-прежнему должны быть украшены архитектурой; Однако, включая LegacyUninstall=1
windows, игнорирует раздел [DefaultUninstall] (в Windows 10 версии 1903 и более поздних версиях). Таким образом, вы можете включить этот раздел в INF, где его можно использовать вниз с устаревшим приложением установки и удаления, чтобы удалить примитивный пакет драйвера.
Начиная с Windows 10 версии 1903, если вы передаете архитектурно оформленный раздел [DefaultInstall] или [DefaultUninstall] в API InstallHInfSection в setupapi.dll, пакет драйвера будет проверен, чтобы определить, поддерживает ли он примитивные функции драйвера. Если она поддерживает примитивные функции драйвера, а не обрабатывает указанный раздел устаревшим способом, INF передается в DiInstallDriver или DiUninstallDriver, как это необходимо. Таким образом, один установщик может использовать примитивные драйверы в совместимых версиях ОС и поддерживать поддержку предыдущих версий ОС.
Преобразование из INF-файла драйвера устройства
Преобразование INF-файла, использующего [Manufacturer] в файл, использующий [DefaultInstall], требует незначительных изменений в INF. В отличие от раздела [Производитель], раздел [DefaultInstall] является точкой входа и разделом установки. Это концептуально объединяет раздел [Производитель], [Модели] и [DDInstall] в один.
Следующий INF-файл получит ошибку 1297 в InfVerif, так как он не устанавливается ни на одном оборудовании.
[Manufacturer]
%Company% = Driver, NTx86, NTamd64
[Driver.NTx86]
%DeviceDesc% = InstallSection_32,
[Driver.NTamd64]
%DeviceDesc% = InstallSection_64,
[InstallSection_64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[InstallSection_64.Services]
AddService = MyService,, MyService_Install
[InstallSection_32]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[InstallSection_32.Services]
AddService = MyService,, MyService_Install
Приведенный выше INF-файл можно преобразовать в INF на основе [DefaultInstall], как показано ниже.
[DefaultInstall.NTamd64]
CopyFiles = MyCopyFiles_64
AddReg = MyAddReg
[DefaultInstall.NTamd64.Services]
AddService = MyService,, MyService_Install
[DefaultInstall.NTx86]
CopyFiles = MyCopyFiles_x86
AddReg = MyAddReg
[DefaultInstall.NTx86.Services]
AddService = MyService,, MyService_Install