Поделиться через


Указание совместного установщика KMDF в INF-файле

Примечание.

Если ваш драйвер предназначен только для Windows 10, вам не нужно распространять WDF или предоставлять совместный установщик в пакете драйвера. Чтобы нацелиться на Windows 10, выполните приведенные действия.

  1. На странице свойств Параметры проекта в разделе Параметры драйвера —>Версии целевой ОС выберите Windows 10 или более поздней. Это эквивалентно добавлению следующего в файл .vcxproj:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
  1. В разделе производителя INFукажите 10.0 в качестве целевой версии ОС, как показано ниже.
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.10.0

Если вы включаете в пакет драйвера совместный установщик, прочтите эту тему, чтобы узнать о разделах, которые необходимо указать в INF-файле драйвера. Эта информация не применяется, если вы предоставляете собственное приложение установки, которое вызывает распространяемые компоненты .msu, предоставленные корпорацией Майкрософт.

Разделы INF-файлов для совместного установщика

INF-файл драйвера должен содержать секцию INF DDInstall.CoInstallers, которая устанавливает соустановщик. Например, этот раздел можно назвать MyDevice.ntx86.CoInstallers. Дополнительные сведения об указании совместного установщика в INF-файле см. в разделе INF DDInstall.CoInstallers.

Кроме того, INF-файл вашего драйвера должен содержать раздел INF DDInstall.Wdf, считываемый соустановщиком после его установки. Например, этот раздел может называться MyDevice.ntx86.Wdf. После установки совместного установщика платформы он считывает этот раздел во время установки драйвера.

INF DDInstall. Раздел Wdf содержит следующую директиву:

  • KmdfService =DriverService,Wdf-install-section

DriverService представляет имя, которое операционная система будет назначать службе режима ядра драйвера, а Wdf-install-section представляет имя раздела INF, считываемого со-установщиком для получения сведений о драйвере.

Раздел INF, который определяет Wdf-install-section, должен содержать следующую директиву:

  • KmdfLibraryVersion =WdfLibraryVersion

WdfLibraryVersion представляет номер версии библиотеки, например "1.0" или "1.11".

Например, следующий INF DDInstall.Wdf раздел указывает Echo_wdfsect в качестве имени Wdf-install-section.

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

Можно избежать создания нескольких INF-файлов для нескольких версий платформы с помощью файлов INX и средства Stampinf. Дополнительные сведения о файлах INX см. в разделе Using INX Files to Create INF Files.

Пример INFDDInstall. и CoInstallersDDInstall. Разделы Wdf

В следующем примере кода показано, как создать секцию INF DDInstall.CoInstallers и секцию INF DDInstall.Wdf в INF-файле для драйвера PnP. В примере показано, как создать INF-файл, который называется MyDevice.inf и основан на файле Echo.inf драйвера на примере ECHO. Пример драйвера Echo находится в каталоге примеров WDK.

Чтобы создать MyDevice.inf, необходимо изменить все ECHO_Device подстроки в Echo.inf на имя, соответствующее вашему продукту. В следующем примере кода используется MyDevice.

Необходимо попытаться сопоставить макет раздела, который используется в примере Echo.inf . Другими словами, по возможности сохраните разделы, связанные с соустановщиком, чтобы упростить поиск ошибок при копировании и вставке.

Перед изменением echo.inf разделы, устанавливающие соинсталлятор, приведены ниже.

=============== Top of Echo.inf ====================
....
....
[DestinationDirs]
DefaultDestDir = 12
ECHO_Device_CoInstaller_CopyFiles = 11
....
....
;
;--- ECHO_Device Co-installer installation ------
;
[ECHO_Device.NT.CoInstallers]
AddReg=ECHO_Device_CoInstaller_AddReg
CopyFiles=ECHO_Device_CoInstaller_CopyFiles

[ECHO_Device_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[ECHO_Device_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[ECHO_Device.NT.Wdf]
KmdfService = Echo, Echo_wdfsect
[Echo_wdfsect]
KmdfLibraryVersion = 1.0

===============  End of Echo.inf ===============

После изменения всех ECHO_Device подстроок файл MyDevice.inf должен отображаться следующим образом:

=============== Top of MyDevice.inf ===============
....
....
[DestinationDirs]
DefaultDestDir = 12
MyDevice_CoInstaller_CopyFiles = 11
....
....
;
;--- MyDevice Co-installer installation ------
;
[MyDevice.NT.CoInstallers]
AddReg=MyDevice_CoInstaller_AddReg
CopyFiles=MyDevice_CoInstaller_CopyFiles

[MyDevice_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01000.dll,WdfCoInstaller"

[MyDevice_CoInstaller_CopyFiles]
WdfCoInstaller01000.dll

[MyDevice.NT.Wdf]
KmdfService = MyDevice, MyDevice_wdfsect
[MyDevice_wdfsect]
KmdfLibraryVersion = 1.0
....
....
=============== End of MyDevice.inf ===============