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 部分,该节在其 版本 节中指定相同的 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 节具有一个或多个 AddReg 指令,用于在注册表中系统提供的 SetupClassGUID 子项下添加条目。 这些条目可以包括特定于类的“友好名称”、类安装程序路径、类图标、属性页提供程序等。

AddRegCopyFiles 外,此处所示的其他指令很少用于 ClassInstall32 节。

若要支持驱动程序文件的多平台分发,请构造特定于平台的 ClassInstall32 部分。 例如,处理 ClassInstall32 节的所有系统 SetupAPI 函数都将首先在 x86 平台上搜索 ClassInstall32.ntx86 节,并且仅检查未修饰的 ClassInstall32 节(如果找不到 ClassInstall32.ntx86 部分)。 有关如何使用系统定义的 .nt.ntx86.ntia64.ntamd64.ntarm.ntarm64 扩展的详细信息,请参阅 为多个平台和操作系统创建 INF 文件

注意

ClassInstall32 节名称还用于在 64 位平台上安装。

从 Windows 2000 开始,每个已安装的设备都与 一个设备安装类相关联。 如果要安装的设备的 INF 未与新的设备类安装程序相关联,或者其“版本”部分中的 ClassGUID= 规范与系统定义的安装类 GUID 不匹配,则该设备与名为“Unknown”的设备安装类相关联。

任何设备类安装程序的 INF 通常在其 ClassInstall32 节中具有 AddReg 指令,用于定义至少一个命名节,以便为其设备类型创建友好名称。 安装新) 安装程序类的第一个 (设备时,安装代码会在注册表的适当位置根据为 INF 版本部分中的 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中图标的资源标识符。

在特定于类的注册表项中设置预定义 SilentInstallNoDisplayClassNoInstallClass 布尔值条目将产生以下效果:

  • 设置 SilentInstall 指示安装程序在安装此类设备时不向需要响应的用户发送弹出消息,无论是在类安装程序 INF 文件的 DDInstall 节中指定的,还是在随后安装的设备的单独 INF 文件中指定,这些设备通过在其各自的版本部分中设置相同的 ClassGuid={ClassGUID} 规范来声明自己为此类。 例如,CD-ROM 和磁盘设备的系统类安装程序以及系统并行端口类安装程序在其各自的注册表项中设置了 SilentInstall。

    如果特定于类的安装程序要求为其安装的任何设备重启计算机,则其 INF 中特定于类的 add-registry 部分不能包含此值条目。

  • 设置 NoDisplayClass 通过设备管理器禁止显示此类的所有设备的用户可见显示。 例如,打印机和网络驱动程序的系统类安装程序 (包括客户端、服务和协议) 在其各自的注册表项中设置 NoDisplayClass。

  • 设置 NoInstallClass 表示此类型的设备都不需要最终用户手动安装。 例如,专门即插即用 (PnP) 设备的系统类安装程序在其各自的注册表项中设置 NoInstallClass。

ClassInstall32 节可以包含 AddReg 指令,用于设置其安装程序类设备的 DeviceTypeDeviceCharacteristics和安全性。 有关详细信息,请参阅 INF AddReg 指令

示例

此示例演示 ClassInstall32 部分,以及它与 AddReg 指令一起引用的命名节。

[ClassInstall32] 
AddReg=example_class_addreg

[example_class_addreg]
HKR,,,,%ClassName%
HKR,,Icon,,"-1"

相比之下,此示例设置类特定的属性页提供程序。 此 INF 还将类键中的 SilentInstallNoInstallClass 值条目设置为 TRUE (1) 。

[example_class_addreg]
HKR,,,,%ClassName%
HKR,,EnumPropPages32,,"ExampleBinary.Dll,ExamplePropPageProvider"
HKR,,SilentInstall,,1
HKR,,NoInstallClass,,1
HKR,,Icon,,"101"

另请参阅

AddProperty

AddReg

BitReg

CopyFiles

DDInstall

DelFiles

DelProperty

DelReg

Ini2Reg

模型

RenFiles

SetupDiBuildClassInfoList

UpdateIniFields

UpdateInis

版本