在 INF 文件中指定 KMDF 辅助安装程序

注意

如果驱动程序仅面向Windows 10,则无需重新分发 WDF 或在驱动程序包中提供 Cointaller。 以Windows 10为目标:

  1. 在 Visual Studio 的“项目设置”属性页中,在“驱动程序设置”->“目标操作系统版本”下,选择“Windows 10或更高版本”。 这相当于将以下内容添加到 .vcxproj 文件:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
  1. “INF 制造商”部分中,指定 10.0 作为目标 OS 版本,如下所示:
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.10.0

如果在 驱动程序包中包含辅助安装程序,请阅读本主题,了解有关必须在驱动程序的 INF 文件中提供的各个部分的信息。 如果你提供自己的安装应用程序来调用 Microsoft 提供的 .msu 可再发行组件,则此信息不适用。

辅助安装程序的 INF 文件部分

驱动程序的 INF 文件必须包含 INF DDInstall。安装共同安装程序的 CoInstallers 部分。 例如,此部分可能名为 MyDevice.ntx86.CoInstallers。 有关在 INF 文件中指定共同安装程序的详细信息,请参阅 INF DDInstall.CoInstallers 部分

此外,驱动程序的 INF 文件必须包含 INF DDInstall 共同安装程序在安装后读取的 Wdf 节。 例如,此部分可能名为 MyDevice.ntx86.Wdf。 安装框架的辅助安装程序后,它会在安装驱动程序时阅读此部分。

INF DDInstall。Wdf 节包含以下指令:

  • KmdfService =DriverServiceWdf-install-section

DriverService 表示操作系统将分配给驱动程序的内核模式服务的名称, 而 Wdf-install-section 表示辅助安装程序为获取驱动程序相关信息而读取的 INF 节的名称。

Wdf-install-section 标识的 INF 节必须包含以下指令:

  • 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

通过使用 INX 文件和 Stampinf 工具,可以避免为框架的多个版本创建多个 INF 文件。 有关 INX 文件的详细信息,请参阅使用 INX 文件创建 INF 文件

示例 INFDDInstall。CoInstallers 和DDInstall。Wdf 节

下面的代码示例演示如何创建 INF DDInstall。CoInstallers 部分和 INF DDInstall PnP 驱动程序的 INF 文件的 Wdf 部分。 该示例演示如何创建名为 MyDevice.inf 且基于 ECHO 示例驱动程序的 Echo.inf 文件的 INF 文件。 Echo 示例驱动程序位于 WDK 的示例目录中。

若要创建 MyDevice.inf,必须将 Echo.inf 中的所有ECHO_Device子字符串更改为适合你的产品的名称。 下面的代码示例使用 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 ===============