INF ClassInstall32 部分
注意
如果要生成通用或 Windows 驱动程序包,则本部分无效。 请参阅在 Windows 驱动程序中使用通用 INF 文件和入门。
ClassInstall32 部分为新类中的设备安装新的设备安装程序类。
[ClassInstall32] |
[ClassInstall32.nt] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
AddReg=add-registry-section[,add-registry-section]...
[AddProperty=add-property-section[,add-property-section] ...] (Windows Vista and later versions of Windows)
[Copyfiles=@filename | file-list-section[,file-list-section]...]
[DelReg=del-registry-section[,del-registry-section]...]
[DelProperty=del-property-section[,del-property-section] ...] (Windows Vista and later versions of Windows)
[Delfiles=file-list-section[,file-list-section]...]
[Renfiles=file-list-section[,file-list-section]...]
[BitReg=bit-registry-section[,bit-registry-section]...]
[UpdateInis=update-ini-section[,update-ini-section]...]
[UpdateIniFields=update-inifields-section[,update-inifields-section]...]
[Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...]
项
AddReg=add-registry-section[,add-registry-section]...
引用一个或多个包含要写入注册表的类特定值条目的命名节。 通常,这用于为新设备安装程序类提供至少一个友好名称,其他组件稍后可以从注册表中检索该名称,并用于打开此新设备类的已安装设备,或为此设备安装程序类“安装”任何属性页提供程序,等等。
任何 add-registry-section 中的 HKR 规范指定包含该类的设置的注册表项。 有关其他信息,请参阅以下 “备注” 部分。
有关详细信息,请参阅 INF AddReg 指令。
AddProperty=add-property-section[,add-property-section]...
(Windows Vista 及更高版本的 Windows) 引用一个或多个修改设备设置类的设备属性的 INF 文件部分。 应仅使用 INF AddProperty 指令 来设置 Windows Vista 或更高版本 Windows 操作系统中新增的设备安装程序类属性。
对于之前在 Windows Server 2003、Windows XP 或 Windows 2000 上引入且具有相应注册表项值的设备类属性,应继续使用 INF AddReg 指令 来设置设备安装程序类属性。 这些准则适用于系统定义的属性和自定义属性。
有关如何使用 AddProperty 指令的详细信息,请参阅 使用 INF AddProperty 指令和 INF DelProperty 指令。
Copyfiles=@filename | file-list-section[,file-list-section]...
指定一个要从源媒体复制到目标的命名文件,或引用一个或多个指定源介质上的类相关文件传输到目标的命名节。 INF 的 DestinationDirs 节中的 DefaultDestDir 条目指定要复制的任何特定于类的单个文件的目标目录。
有关详细信息,请参阅 INF CopyFiles 指令。
注意
系统为设备安装类提供的 INF 文件在本部分中不使用此指令。
DelReg=del-registry-section[,del-registry-section]...
引用一个或多个命名节,在这些节中指定要在安装类安装程序期间从注册表中删除的值项或键。
但是,如果特定的 {SetupClassGUID} 已作为已安装类存在,则系统安装代码随后会忽略任何 INF 的 ClassInstall32 节,该节在其 Version 节中指定相同的 GUID 值。 因此,INF 无法替换现有类安装程序,也无法从 ClassInstall32 节修改其行为。
有关详细信息,请参阅 INF DelReg 指令。
DelProperty=del-property-section[,del-property-section]...
(Windows Vista 及更高版本的 Windows) 引用一个或多个 INF 文件部分,这些节删除为设备安装程序类设置的设备属性。 应仅使用 INF DelProperty 指令 删除 Windows Vista 或更高版本的 Windows 操作系统中新增的设备安装程序类属性。
对于之前在 Windows Server 2003、Windows XP 或 Windows 2000 上引入且具有相应注册表项值的设备类属性,应继续使用 INF DelReg 指令 删除设备安装程序类属性。 这些准则适用于系统定义的属性和自定义属性。
有关如何使用 DelProperty 指令的详细信息,请参阅 使用 INF AddProperty 指令和 INF DelProperty 指令。
Delfiles=file-list-section[,file-list-section]...
引用一个或多个命名节,其中以前在目标上安装的类相关文件被指定为删除。
有关详细信息,请参阅 INF DelFiles 指令。
Renfiles=file-list-section[,file-list-section]...
引用一个或多个命名节,其中列出了目标上要重命名的类相关文件。
有关详细信息,请参阅 INF RenFiles 指令。
BitReg=bit-registry-section[,bit-registry-section]...
在此部分中有效,但几乎从未使用过。
有关详细信息,请参阅 INF BitReg 指令。
UpdateInis=update-ini-section[,update-ini-section]...
在此部分中有效,但几乎从未使用过。
有关详细信息,请参阅 INF UpdateInis 指令。
UpdateIniFields=update-inifields-section[,update-inifields-section]...
在此部分中有效,但几乎从未使用过。
有关详细信息,请参阅 INF UpdateIniFields 指令。
Ini2Reg=ini-to-registry-section[,ini-to-registry-section]...
在此部分中有效,但几乎从未使用过。
有关详细信息,请参阅 INF UpdateIniFields 指令。
注解
只有在安装新的自定义设备安装程序类时,才应在设备 INF 文件中包含 ClassInstall32 部分。 安装类中设备的 INF 文件(无论是 系统提供的设备安装程序类 还是自定义类)不应包含 ClassInstall32 节。 因为系统仅在尚未安装 ClassInstall32 节时才处理 ClassInstall32 节,因此不能使用 ClassInstall32 节重新安装或更改已安装类的设置。 具体而言,不能使用 ClassInstall32 部分为已安装的类添加类辅助安装程序或类筛选器驱动程序。 有关如何安装辅助安装程序和筛选器驱动程序的信息,请参阅 编写辅助安装程序 和 安装筛选器驱动程序。
通常, ClassInstall32 节具有一个或多个 AddReg 指令,用于在注册表中系统提供的 SetupClassGUID 子项下添加条目。 这些条目可以包括特定于类的“友好名称”、类安装程序路径、类图标、属性页提供程序等。
除 AddReg 和 CopyFiles 外,此处所示的其他指令很少在 ClassInstall32 节中使用。
若要支持驱动程序文件的多平台分发,请构造特定于平台的 ClassInstall32 部分。 例如,处理 ClassInstall32 节的所有系统 SetupAPI 函数都将首先在 x86 平台上搜索 ClassInstall32.ntx86 节,并且仅在找不到 ClassInstall32.ntx86 节时检查未修饰的 ClassInstall32 节。 有关如何使用系统定义的 .nt、 .ntx86、 .ntia64、 .ntamd64、 .ntarm 和 .ntarm64 扩展的详细信息,请参阅 为多个平台和操作系统创建 INF 文件。
注意
ClassInstall32 节名称还用于 64 位平台上的安装。
从 Windows 2000 开始,每个已安装的设备都与 设备安装类相关联。 如果要安装的设备的 INF 未与新的设备类安装程序相关联,或者“版本”部分中的 ClassGUID= 规范与系统定义的安装类 GUID 不匹配,则该设备与名为“Unknown”的设备安装类相关联。
任何设备类安装程序的 INF 通常在其 ClassInstall32 节中都有 AddReg 指令,以定义至少一个命名节,以便为其设备类型创建友好名称。 安装新) 安装程序类时,安装代码会在注册表的适当位置根据为 INF 的 Version 节中的 ClassGUID= 条目提供的值自动创建 (SetupClassGUID 键。
INF 可以使用其 ClassInstall32 节中引用的 add-registry 节来指定属性页提供程序,并控制其设备类在用户界面中的处理方式。
此类特定于类的 add-registry 节具有以下常规形式:
[SetupClassAddReg]
HKR,,,,%DevClassName% ; device-class friendly name
[HKR,,Installer32,,"class-installer.dll,class-entry-point"]
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
HKR,,Icon,,"icon-number"
[HKR,,SilentInstall,,1]
[HKR,,NoInstallClass,,1]
[HKR,,NoDisplayClass,,1]
系统使用指定的图标向用户表示安装程序。
- 如果 Icon 值为正,则表示资源的资源标识符。 如果指定了 Installer32 键,则从类安装程序 DLL 中提取资源;如果指定了 EnumPropPages32 键,则从属性页 DLL 中提取资源。 值“0”表示 DLL 中的第一个图标。 保留值“1”。
- 如果 Icon 值为负值,则绝对值是 SetupApi.DLL 中图标的资源标识符。
设置特定于类的注册表项中的预定义 SilentInstall、 NoDisplayClass 和 NoInstallClass 布尔值条目具有以下效果:
设置 SilentInstall 会指示安装程序在安装此类设备时不向用户发送需要响应的弹出消息,无论是在类安装程序 INF 文件的 DDInstall 节中指定的,还是在随后安装的设备的单独 INF 文件中指定,这些设备通过在其各自的版本部分中设置相同的 ClassGuid={ClassGUID} 规范来声明自己为此类。 例如,CD-ROM 和磁盘设备的系统类安装程序以及系统并行端口类安装程序在其各自的注册表项中设置 SilentInstall。
如果特定于类的安装程序要求为其安装的任何设备重启计算机,则其 INF 中特定于类的 add-registry 部分不能包含此值条目。
设置 NoDisplayClass 通过设备管理器禁止显示此类的所有设备的用户可见。 例如,打印机和网络驱动程序的系统类安装程序 (包括客户端、服务和协议) 在其各自的注册表项中设置 NoDisplayClass。
设置 NoInstallClass 指示此类型的设备永远不需要最终用户手动安装。 例如,独占即插即用 (PnP) 设备的系统类安装程序在其各自的注册表项中设置 NoInstallClass。
ClassInstall32 节可以包含 AddReg 指令,用于设置其安装程序类的 DeviceType、DeviceCharacteristics 和设备的安全性。 有关详细信息,请参阅 INF AddReg 指令 。
示例
此示例显示了 ClassInstall32 部分,以及它使用 AddReg 指令引用的命名节。
[ClassInstall32]
AddReg=example_class_addreg
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,Icon,,"-1"
相比之下,此示例设置特定于类的属性页提供程序。 此 INF 还会将类键中的 SilentInstall 和 NoInstallClass 值条目设置为 TRUE (1) 。
[example_class_addreg]
HKR,,,,%ClassName%
HKR,,EnumPropPages32,,"ExampleBinary.Dll,ExamplePropPageProvider"
HKR,,SilentInstall,,1
HKR,,NoInstallClass,,1
HKR,,Icon,,"101"