DEVPROP_TYPE_STRING_INDIRECT

DEVPROP_TYPE_STRING_INDIRECT标识符表示包含间接字符串引用的以 NULL 结尾的 Unicode 字符串的基数据类型标识符。

注解

间接字符串引用描述包含实际字符串的字符串资源。 间接字符串引用可以采用以下格式之一显示:

@[path\]FileName,-ResourceID
Windows 从 路径FileName 条目指定的模块中提取字符串,字符串的资源标识符由 ResourceID 条目提供, (排除) 所需的减号。 字符串资源是从最匹配调用方首选 UI 语言之一的模块资源部分加载的。 路径条目是可选的。 如果指定 路径 条目,则模块必须位于系统定义的搜索路径中的目录中。

@ InfName,%strkey%
Windows 从 %SystemRoot%\inf 目录中 INF 文件的 INF 字符串部分提取字符串,其名称由 InfName 条目提供。 strkey 令牌标识符应与“字符串”部分中与调用方首选 UI 语言之一最匹配的行的键匹配。 如果不存在特定于语言 的字符串 部分,Windows 将使用默认 的“字符串” 部分。

不能将DEVPROP_TYPE_STRING_INDIRECT与任何属性数据类型修饰符组合在一起。

设置此类型的属性

若要设置基数据类型为DEVPROP_TYPE_STRING_INDIRECT的属性,请调用相应的 SetupDiSetXxx 属性函数并设置函数输入参数,如下所示:

  • PropertyType 参数设置为 DEVPROP_TYPE_STRING_INDIRECT。

  • PropertyBuffer 参数设置为指向缓冲区的指针,该缓冲区包含提供间接字符串引用的以 NULL 结尾的字符串。

  • PropertyBufferSize 参数设置为字符串的大小(以字节为单位)。

  • 根据需要设置剩余的函数参数以设置 属性。

检索此属性类型的值

当应用程序调用 SetupDiGetXxx 属性函数来检索此基数据类型的属性的值时,Windows 会尝试查找该属性引用的实际字符串。 如果 Windows 可以检索实际字符串,它将实际字符串返回给调用方,并将检索到的属性的基数据类型标识为 DEVPROP_TYPE_STRING。 否则,Windows 将返回间接字符串引用,并将检索到的属性的基数据类型标识为DEVPROP_TYPE_STRING_INDIRECT。

本地化静态文本

从 Windows Vista 开始,可以通过将静态文本属性类型设置为 DEVPROP_TYPE_STRING_INDIRECT,使用 PE 图像的字符串或资源表中的资源来本地化自定义和标准字符串类型的 PnP 静态文本属性。 还可以添加可格式化为静态文本的非本地化替换字符串数据。

通常由 LoadString) 执行的 PE 映像的 STRINGTABLE 资源 (中的字符串应使用以下格式:

“@”System32\mydll.dll,-21[;Fallback“ String]”

“@System32\mydll.dll,-21[;包含 %1、%2 的回退字符串... to %n[; (Arg1,Arg2,...,ArgN) ]]”

位于 PE 映像的消息表资源 (的字符串通常由 RtlFindMessage 执行,更常用于驱动程序) 应使用以下格式:

“@System32\drivers\mydriver.sys,#21[;回退字符串]”

“@System32\drivers\mydriver.sys,#21[;包含 %1、%2 的回退字符串... to %n[; (Arg1,Arg2,...,ArgN) ]]”

“回退字符串”是可选的,但很有用,因为它可以在找不到或加载资源时返回。 回退字符串也会返回到非交互式系统进程,这些进程不会模拟用户,因此无法向用户显示本地化文本。

此方法使你能够本地化从字符串或消息表资源中提取的与调用方的区域设置最匹配的静态文本。

当从相应的资源表中检索尾随参数时,Windows 会将尾随参数格式化为字符串 (或回退字符串) ,与 RtlFormatMessage 相同。

通过从执行设置操作的组件加载资源来设置 属性时,自定义和标准字符串类型 PnP 静态文本将本地化,这通常发生在系统级组件的系统默认区域设置下。

注意:PE 映像可以使用资源表类型 (STRINGTABLE 资源,也可以使用消息表资源) 。

要求

版本

Windows Vista 和更高版本的 Windows。

标头

Devpropdef.h (包括 Devpropdef.h)

另请参阅

DEVPROP_TYPE_STRING