AddProperty 指令引用一个或多个 INF 文件节,这些节修改为设备实例、设备容器、设备设置类、设备接口类或设备接口设置的设备属性。
[DDInstall] |
[DDInstall.nt] |
[DDInstall.ntx86] |
[DDInstall.ntia64] |
[DDInstall.ntamd64] |
[DDInstall.ntarm] |
[DDInstall.ntarm64]
[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)
[interface-install-section] |
[interface-install-section.nt] |
[interface-install-section.ntx86] |
[interface-install-section.ntia64] | (Windows XP and later versions of Windows)
[interface-install-section.ntamd64] | (Windows XP and later versions of Windows) |
[interface-install-section.ntarm] | (Windows 8 and later versions of Windows) |
[interface-install-section.ntarm64] | (Windows 10 version 1709 and later versions of Windows)
[add-interface-section]
AddProperty=add-property-section[,add-property-section]... (Windows Vista and later versions of Windows)
...
每个 add-property-section 可以有条目执行以下作:
添加设备属性并初始化属性的值。
修改现有设备属性的值。
AddProperty 指令引用的 add-property-section 具有以下格式:
[add-property-section]
(property-name, , , [flags], value) |
({property-category-guid}, property-pid, type, [flags], value)
...
add 属性节可以具有任意数量的 属性名称 条目或 属性 guid 条目,每个条目位于单独的行中。
条目
property-name
表示设备实例 驱动程序包 属性的下列属性名称之一:
DeviceModel
DeviceVendorWebsite
DeviceDetailedDescription
DeviceDocumentationLink
DeviceIcon
DeviceBrandingIcon
有关添加自定义设备图标的详细信息,请参阅 为设备提供图标。
表示设备容器 驱动程序包 属性的下列属性名称之一。
ContainerModelName
ContainerManufacturer
ContainerCategories
ContainerIcon
有关指定描述物理设备的信息的详细信息,请参阅 驱动程序包容器元数据
property-category-guid
标识属性类别的 GUID 值。 GUID 值可以是系统定义的 GUID,用于标识设备实例、 设备设置类、 设备接口类或设备接口的属性类别之一。 具有相同 GUID 值的所有属性都是同一类别的成员。 这些属性类别在 Devpkey.h 中定义。
GUID 值也可以是标识自定义属性类别的自定义 GUID 值。
property-pid
指示属性类别中由 属性类别 guid 值指示的特定属性的属性标识符。 出于内部系统原因,属性标识符必须大于或等于 2。
类型
由 property-category-guid 值和 property-pid 值指定的属性的属性数据类型标识符的十进制或十六进制格式的数值。 仅支持以下 基本数据类型 :
DEVPROP_TYPE_STRING
DEVPROP_TYPE_STRING_LIST
DEVPROP_TYPE_BINARY
DEVPROP_TYPE_BOOLEAN
DEVPROP_TYPE_UINT32
例如,DEVPROP_TYPE_STRING数据类型的十进制值为 18(0x00000012),DEVPROP_TYPE_STRING_LIST数据类型的十进制值为 8210(0x00002012)。
flags
可选的十六进制值,它是控制添加作的以下标志的按位 OR:
0x00000001 (FLG_ADDPROPERTY_NOCLOBBER)
阻止值条目值替换现有属性值的标志。 如果驱动程序编写器希望使属性能够通过 Include 和 Needs 指令重写,则编写器必须为该属性指定此标志。 这是因为 Windows 在 Windows 处理包含和需要指令的 INF 节中的所有其他指令后,由 Include 和 Needs 指令引用的 INF 节。
0x00000002 (FLG_ADDPROPERTY_OVERWRITEONLY)
仅当指定属性已存在时,才会将属性值设置为值条目值的标志。
0x00000004 (FLG_ADDPROPERTY_APPEND)
将值项值追加到现有属性值的标志。 仅当属性数据类型DEVPROP_TYPE_STRING_LIST时,此标志才有效。 如果提供字符串已存在于现有字符串值中,则提供的字符串不会追加到现有属性值。
0x00000008 (FLG_ADDPROPERTY_OR)
对现有属性值执行按位 OR 值输入值的标志。 仅当属性数据类型DEVPROP_TYPE_UINT32时,此标志才有效。
0x00000010 (FLG_ADDPROPERTY_AND)
一个标志,该标志对现有属性值执行按位 AND 值输入值。 仅当属性数据类型DEVPROP_TYPE_UINT32时,此标志才有效。
对于 属性名称中列出的设备容器属性,不需要标志,在分析期间将被忽略。
值
添加作用于修改属性值的值,具体取决于属性数据类型和 标志 项的值。
对于 属性名称中列出的某些设备容器属性,该值可以是 %strkey% 令牌,允许特定于区域设置的字符串。 下表描述了可以为这些属性指定哪些值。 有关特定于区域设置的字符串的详细信息,请参阅 INF 字符串部分。
属性名称 | 价值 | 可通过用于 %strkey% 令牌的 [Strings.LanguageID] 部分进行本地化 |
---|---|---|
ContainerModelName | 字符串或 %strkey% 令牌 | 是的 |
ContainerManufacturer | 字符串或 %strkey% 令牌 | 是的 |
ContainerCategories | DeviceCategory 中的字符串列表(用逗号分隔) | 否 |
ContainerIcon | 一个字符串或 %strkey% 标记,表示驱动程序包中包含的图标文件的路径 | 是的 |
注解
AddProperty 指令可用于修改系统定义的设备属性或自定义设备属性。 可以在上述正式语法语句中显示的任一节下指定此指令。
每个 add-property-section 名称在 INF 文件中必须是唯一的,但该节可由同一 INF 文件中的多个 AddProperty 指令引用。 每个节名称必须遵循一般规则来定义 INF 文件的常规语法规则中所述的节名称。
有关如何使用 INF AddProperty 指令的详细信息,请参阅 使用 INF AddProperty 指令和 INF DelProperty 指令。
例子
Add 属性节的以下示例包括两个行项:第一行条目按名称设置 DeviceModel 属性,第二行条目通过指定自定义属性键 GUID 来设置自定义设备属性。
第一行包括 属性名称 条目值“DeviceModel”和 值 条目值“示例设备模型名称”。
第二行条目在自定义属性类别中设置自定义属性。 property-category-guid 条目值为“c22189e4-8bf3-4e6d-8467-8dc6d95e2a7e”,属性标识符条目值为“2”。 可选 标志 项值不存在,类型条目值为“18”(DEVPROP_TYPE_STRING)。 值条目值为“属性 1 的字符串值”。
[SampleAddPropertySection]
DeviceModel,,,,"Sample Device Model Name"
{c22189e4-8bf3-4e6d-8467-8dc6d95e2a7e}, 2, 18,, "String value for property 1"