Удаление соустановщиков из пакетов драйверов
Осторожность
Начиная с января 2023 г., пакеты драйверов , содержащие совместный установщик, больше не подписываются порталом центра разработчиков оборудования . Дополнительные сведения о требованиях см. в разделе технические спецификации и политики совместимости оборудования Windows, в частности политики версии 22H2, раздел Device.DevFund.INF.Декларативный.
На этой странице рассматриваются распространенные причины, по которым соустановщики должны присутствовать в пакете драйверов, а также предлагаются механизмы для выполнения той же задачи без соустановщика.
Совместные установщики WDF и WinUSB
Совместные установщики WDF и WinUSB не требуются на любой системе под управлением Windows 10 и позже. Ссылки на совместный установщик WDF могут быть удалены без дополнительной работы. Ссылки на совместный установщик WinUSB можно удалить, и на WinUSB следует ссылаться из INF-файла пакета драйвера с помощью директив Include и Needs.
руководство по пакету драйвера WinUSB
Установка программного обеспечения, представляющее пользовательский интерфейс
Вместо запуска приложения во время установки предоставьте приложение универсальной платформы Windows, установленное с помощью директивы AddSoftware addSoftwareиз раздела DDInstall.Software INF пакета драйвера.
Дополнительные сведения см. в разделе Связывание драйвера с приложением универсальной платформы Windows (UWP). Директива AddSoftware
Дополнительные сведения см. в разделе Установка связанного программного обеспечения ниже.
Настройка понятных имен устройств
INF-файл
Inf-файл пакета драйвера может задать понятное имя устройства следующим образом:
[DDInstall.HW]
AddReg = FriendlyName_AddReg
[FriendlyName_AddReg]
HKR,,FriendlyName,, "Device Friendly Name"
Время выполнения
Дружественное имя может быть задано драйвером во время старта IRP или этапа PrepareHardware, задав свойство DEVPKEY_Device_FriendlyName с помощью одного из следующих API-методов:
Другие параметры и конфигурации устройства
По возможности драйвер может изменить параметры и конфигурацию устройства в фазе Start IRP или фазе PrepareHardware. При изменении состояния во время выполнения драйвер должен следовать требованиям к изоляции пакета драйвера . Эти требования содержат рекомендации по настройке драйверов и макету состояния, а также помогают сделать конфигурацию драйвера более устойчивой к внешним изменениям, упрощают обновление и установку, обеспечивая его безболезненную адаптацию к будущим изменениям.
Для параметров и конфигурации, которые не могут быть заданы в самом драйвере, пакет драйвера может также включать компоненты среды выполнения в пользовательском режиме, которые изменяют параметры и конфигурацию. Это может быть приложение для пользователя или служба Win32, которая обновляет конфигурацию. Смотрите информацию о том, как включить программное обеспечение пользовательского режима для использования с устройством, в разделе Использование INF-файла компонента.
Если используется постоянный компонент, например служба, убедитесь, что ее функциональные возможности необходимы и не могут выполняться менее ресурсоемким способом, например в пакете драйвера INF или в самом драйвере. Сведения о том, как обеспечить работу службы только при подключении соответствующих устройств, см. в триггерах службы, службах Win32, взаимодействующих с устройствами, и регистрации уведомлений об интерфейсах устройств. Служба также должна соответствовать последним требованиям, например для этого необходимо прохождение API Validator.
Установка связанного программного обеспечения
Часть "Componentized" требований драйвера DCH представила концепцию SoftwareComponent, которая является механизмом для разделения установки драйвера устройства от связанного программного обеспечения. Когда компонент программного обеспечения создается с помощью INF, он автоматически создает дочернее устройство, которое сопоставляется с программным компонентом. Это дочернее устройство будет существовать для установки программного обеспечения, связанного с родительским устройством. Это программное обеспечение можно устанавливать и обновлять независимо от основного устройства и драйвера.
В пакете драйвера SoftwareComponent INF рекомендуемый механизм установки программного обеспечения использует директиву AddSoftware. Это приведет к загрузке и установке программного обеспечения из Магазина Windows.
Зависимости между драйверами и устройствами
Зависимости порядка запуска и перечисления устройств
Насколько это возможно, следует избежать зависимостей между устройствами или требований к последовательности запуска.
Для устройств, перечисляемых с помощью ACPI, объект зависимости (_DEP) можно использовать в встроенном ПО ACPI для управления порядком запуска устройств. Дополнительные сведения см. в пространстве имен управления устройствами .
Драйверы могут реагировать на IRP_MN_QUERY_DEVICE_RELATIONS IRP, чтобы определить связи между устройствами, например отношения удаления. Дополнительные сведения см. в IRP_MN_QUERY_DEVICE_RELATIONS.
Зависимости установки пакета драйвера
Директива CopyInf также может использоваться для установки дополнительного пакета драйверов во время того же самого вызова API установки, что и при установке другого драйвера. Пакет драйверов, передаваемый в API установки, будет установлен перед любыми пакетами драйверов, на которые ссылается CopyInf, но пакеты драйверов, на которые ссылается CopyInf, не обязательно будут установлены в определенном порядке.
Настройка компонентов из нескольких поставщиков, объединенных в один пакет драйвера
Пакеты драйверов поддерживают тип INF пакета драйвера, который называется расширением INF. Это INF-файл, специально предназначенный для дополнения и расширения функциональности основного пакета драйвера INF. Расширение может не предоставлять драйвер функции для устройства, но в противном случае может использовать другие директивы или записывать другие параметры для устройства. Во время установки драйвера выбирается один базовый пакет драйвера INF с помощью ранжирования драйверов для обеспечения функциональности устройства, а затем для устройства выбираются любые дополнительные INF-файлы. Дополнительные сведения см. в разделе Использование INF-файла расширения.
Распространенная парадигма использования файлов INF пакетов драйверов расширений заключается в том, что производитель оборудования предоставляет базовый пакет драйверов INF, а производитель ОЕМ, поставляющий это оборудование в составе системы, создает пакет драйверов расширений, который настраивает его для этой системы.
Установка и оркестрация обновлений встроенного ПО
Рекомендуется использовать различные механизмы обновления встроенного ПО в зависимости от характера обновляемого устройства. Каждый из следующих элементов можно использовать для отправки и установки обновления встроенного ПО через Центр обновления Windows.
Несъемные
Платформа обновления встроенного ПО UEFI предназначена для обновления компонентов системы, которая не может быть удалена, например встроенное ПО системы. Дополнительные сведения см. в платформе обновления встроенного ПО UEFI.
Сменный
Для съемных устройств, таких как HID или USB-устройства, модель CFU позволяет безопасно обновлять встроенное ПО. Дополнительные сведения об обновлении встроенного ПО компонента см. в .
Настраиваемая реализация
Кроме того, можно написать пользовательский драйвер, который обновляет встроенное ПО устройства по усмотрению драйвера. Дополнительные сведения см. в драйвера пользовательского обновления встроенного ПО.