Using a Universal INF File(使用通用 INF 文件)
某些版本的 Windows 只使用 Windows 10 桌面版中可用的驱动程序安装方法的子集。 用于非桌面版 Windows 的 INF 文件只能执行 INF 文件中完整描述的添加操作。 使用此类受限语法的 INF 文件称为通用 INF 文件。
通用 INF 文件可以预测性地进行安装,每次的结果都相同。 安装结果不依赖于系统提供的设备安装组件之外的组件的执行。 例如,在通用 INF 文件中,共同安装程序引用无效,因为安装过程中需要运行附加 DLL 中的代码,这意味着系统无法仅从 INF 文件中确定安装结果。
要测试 INF 是否通用,请使用 infverif /u
。
Windows 驱动程序必须通过 infverif /w
,它会测试 /u
以及驱动程序包隔离。
有关 InfVerif 选项的列表,请参阅从命令行运行 InfVerif。
如果要生成 Windows 桌面驱动程序包,则不必使用通用 INF 文件,但由于其性能优势,建议使用通用 INF 文件。
在通用 INF 文件中,哪些 INF 部分无效?
可以在通用 INF 文件中使用任何系统定义的 INF 部分,但以下情况除外:
- INF ClassInstall32 部分
- INF DDInstall.CoInstallers 部分
- INF DDInstall.FactDef 部分
- INF DDInstall.LogConfigOverride 部分
只要 TargetOSVersion 修饰不包含 ProductType 标志或 SuiteMask 标志,INF Manufacturer 部分就有效。
INF DefaultInstall 部分只有在具有体系架构修饰(例如 [DefaultInstall.NTAMD64]
)时才有效。
在通用 INF 文件中,哪些 INF 指令无效?
可以在通用 INF 文件中使用任何系统定义的 INF 指令,但以下情况除外:
- INF BitReg 指令
- INF DelFiles 指令
- INF DelProperty 指令
- INF DelReg 指令
- INF DelService 指令
- INF Ini2Reg 指令
- INF LogConfig 指令
- INF ProfileItems 指令
- INF RegisterDlls 指令
- INF RenFiles 指令
- INF UnregisterDlls 指令
- INF UpdateIniFields 指令
- INF UpdateInis 指令
以下指令有效,但有一些注意事项:
如果指定的 add-registry-section 中的条目的 reg-root 值为 HKR,或处于以下情况,则 INF AddReg 指令有效:
INF CopyFiles 指令只有在 destination directory 是下列 dirids 之一时方才有效:
- 11
- 12
- 13(请参阅从 Driverstore 运行)
注意:CopyFiles 不可用于重命名 DestinationDirs 包括 dirid 的文件 13。 - 10,SysWOW64
- 10,特定于供应商的子目录名称
注意:在 Windows 10 版本 1709 中,使用 dirid 10 和特定于供应商的子目录名称在通用 INF 中是有效的,正如使用 InfVerif 工具所衡量的那样。 在更高版本中,该值可能不受支持。 建议改用 dirid 13。