使用 UMDF 辅助安装程序

注意

如果驱动程序仅面向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

可能仍需要引用系统提供的 cointaller,如下所示:

[Echo_Install.NT.CoInstallers] 
AddReg=CoInstallers_AddReg

[CoInstaller.AddReg]
HKR,,CoInstallers32,0x00010000,WudfCoinstaller.dll

共同安装程序更新计算机上存储的框架版本,并处理特定于框架的 INF 文件部分。 本主题介绍这两个 UMDF 共同安装程序,以及何时需要在 驱动程序安装包 中包含一个,或者在 INF 文件中引用共同安装程序。

获取辅助安装程序包

在 Windows 8.1 中,Microsoft 提供的可再发行框架更新包含在 Windows 驱动程序工具包 (WDK) 中。

有关共同安装程序目录内容的完整列表,请参阅 KMDF 驱动程序的安装组件

在其他组件中,共同安装程序目录包含名为 WUDFUpdate_MMmmm.dll的更新共同安装程序,其中 MM 是主版本号,mmm 是次要版本号。

更新辅助安装程序更新计算机上的 UMDF 框架版本。 例如,如果计算机的 UMDF 版本为 1.9,而辅助安装程序包含版本 1.11,则辅助安装程序会将计算机的框架版本更新为 1.11。

操作系统包括另一个共同安装程序,称为 配置辅助安装程序或WudfCoinstaller.dll。 配置辅助安装程序处理驱动程序 INF 文件中特定于 UMDF 的部分,并对注册表进行任何必要的更新。

从 INF 文件引用共同安装程序

如果要为 Windows 8.1 编写 UMDF 2.0 驱动程序,INF 文件必须引用配置共同安装程序。 由于配置辅助安装程序包含在操作系统中,因此无需重新分发它。

如果在Windows 8.1之前编写面向操作系统的 UMDF 1.11 驱动程序,必须确保在使用驱动程序的计算机上安装框架版本 1.11。 下面是执行此操作的三种方法:

  • 在 INF 文件中引用更新辅助安装程序,并将更新辅助安装程序包含在 驱动程序安装包中。 操作系统安装驱动程序时,它会运行辅助安装程序。 如果将通过 Windows 更新 分发驱动程序,则必须选择此选项。

  • 重新分发相关的 MSU 包 (例如 umdf-1.11-Win-6.0.msu) 以及调用它的安装应用程序。 可以在 WDK 安装的 src\general\wdkinstall 子目录中找到此类应用程序的示例。 如果要编写设备附带的安装程序,并且必须在使用设备之前运行,则可以选择此选项。 如果选择此选项,INF 文件必须引用配置辅助安装程序。

  • 依靠 Windows 更新 在使用驱动程序的计算机上安装所需的框架版本。 从框架版本 1.11 开始,通过 Windows 更新 分发新版本的 UMDF。 如果选择此选项,INF 文件必须引用配置辅助安装程序。

在 INF 文件中,必须始终引用更新辅助安装程序或配置辅助安装程序。 但是,在 INF 中引用这两个共同安装程序将导致安装错误。

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

驱动程序的 INF 文件必须包含 INF DDInstall.CoInstallers 部分。 如果重新分发更新共同安装程序, 则 DDInstall.CoInstallers 部分必须同时包含 INF AddReg 指令INF CopyFiles 指令,如以下示例所示。

[MyDriver_Install.CoInstallers]
AddReg = MyDriver_Install.CoInstallers_AddReg
CopyFiles = MyDriver_CoInstallers_CopyFiles

INF AddReg 指令标识创建 CoInstallers32 注册表项的 INF 节。

[MyDriver_Install.CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WudfUpdate_01011.dll"

INF CopyFiles 指令标识将辅助安装程序从安装设备复制到系统设备的 INF 部分。

[MyDriver_CoInstallers_CopyFiles]
WudfUpdate_01011.dll

如果重新分发 MSU 包,则 DDInstall.CoInstallers 部分必须指定引用配置辅助安装程序的 AddReg 指令。

[Echo_Install.NT.CoInstallers]
AddReg=CoInstallers_AddReg
[CoInstaller.AddReg]
HKR,,CoInstallers32,0x00010000,WudfCoinstaller.dll

驱动程序的 INF 文件必须始终包含共同安装程序在安装后读取的 DDInstall.Wdf 节。 有关驱动程序可以在 DDInstall.Wdf 中指定的指令的信息,请参阅 在 INF 文件中指定 WDF 指令

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