在 INF 文件中指定 KMDF 辅助安装程序
注意
如果驱动程序仅面向 Windows 10,则无需重新分发 WDF 或在驱动程序包中提供 Coinstaller。 以 Windows 10 为目标:
- 在 Visual Studio 的“项目设置”属性页的“驱动程序设置->目标 OS 版本”下,选择 Windows 10 或更高版本。 这相当于将以下内容添加到.vcxproj文件:
<PropertyGroup Label="Configuration">
<TargetVersion>Windows10</TargetVersion>
- 在 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 = DriverService,Wdf-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 文件。
示例 INF DDInstall。CoInstallers 和 DDInstall。Wdf 节
下面的代码示例演示如何创建 INF DDInstall。CoInstallers 部分和 INF DDInstall。PnP 驱动程序的 INF 文件的 Wdf 部分。 该示例演示如何创建一个名为 MyDevice.inf 的 INF 文件,并基于 ECHO 示例驱动程序的 Echo.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 ===============