EnumResourceNamesExW 函数 (libloaderapi.h)

枚举与指定二进制模块关联的指定类型的资源。 搜索可以同时包含 LN 文件及其关联的 .mui 文件,也可以通过多种方式进行限制。

语法

BOOL EnumResourceNamesExW(
  [in, optional] HMODULE          hModule,
                 LPCWSTR          lpType,
  [in]           ENUMRESNAMEPROCW lpEnumFunc,
  [in]           LONG_PTR         lParam,
  [in]           DWORD            dwFlags,
  [in]           LANGID           LangId
);

参数

[in, optional] hModule

类型:HMODULE

要搜索的模块的句柄。 通常这是一个 LN 文件,如果设置了标志 RESOURCE_ENUM_MUI,则会在搜索中包含适当的 .mui 文件。 或者,这可以是 .mui 文件或其他 LN 文件的句柄。

如果此参数 NULL,则等效于将句柄传递给用于创建当前进程的模块。

lpType

类型:LPCTSTR

要为其枚举名称的资源的类型。 或者,此参数可以 MAKEINTRESOURCE(ID),其中 ID 是表示预定义资源类型的整数值。 有关预定义资源类型的列表,请参阅 资源类型。 有关详细信息,请参阅下面的“备注”部分。

[in] lpEnumFunc

类型:ENUMRESNAMEPROC

指向要为每个枚举资源名称调用的回调函数的指针。 有关详细信息,请参阅 EnumResNameProc。

[in] lParam

类型:LONG_PTR

传递给回调函数的应用程序定义值。 此参数可用于错误检查。

[in] dwFlags

类型:DWORD

要搜索的文件的类型。 支持以下值。 请注意,如果 dwFlags 为零,则假定指定 RESOURCE_ENUM_LN 和 RESOURCE_ENUM_MUI 标志。

价值 意义
RESOURCE_ENUM_MUI
0x0002
在 .mui 文件中搜索与 hModule 指定的 LN 文件关联的资源,并遵循通常的资源加载程序策略(请参阅 用户界面语言管理)。 或者,如果 LangId 为非零,则只会搜索指定的 .mui 文件。 通常,仅当 hModule 引用 LN 文件时,才应使用此标志。 如果 hModule 引用 .mui 文件,则该文件实际上由 RESOURCE_ENUM_LN 标志覆盖,尽管标志的名称。
RESOURCE_ENUM_LN
0x0001
搜索由 hModule指定的文件,无论该文件是 LN 文件、另一种类型的 LN 文件还是 .mui 文件。
RESOURCE_ENUM_VALIDATE
0x0008
执行枚举时,对资源部分及其引用执行额外的验证,同时执行枚举以确保资源的格式正确。 对于枚举的每个名称,验证设置的最大限制为 260 个字符。

[in] LangId

类型:LANGID

用于筛选 MUI 模块中的搜索的本地化语言。 此参数仅在 dwFlags中设置 RESOURCE_ENUM_MUI 标志时才使用。 如果指定了零,则搜索中包括与当前语言首选项匹配的所有 .mui 文件(请参阅 用户界面语言管理)。 如果指定了非零 LangId,则搜索的唯一 .mui 文件将是与指定的 LangId匹配的文件。

返回值

类型:BOOL

如果成功,函数 TRUE;如果函数找不到指定类型的资源,或者函数因其他原因而失败,则 FALSE。 若要获取扩展的错误信息,请调用 GetLastError。

言论

如果 IS_INTRESOURCE(lpszType) TRUE,则 lpszType 指定给定资源类型的整数标识符。 否则,它是指向以 null 结尾的字符串的指针。 如果字符串的第一个字符是磅号 (#),则其余字符表示指定十进制数字

资源类型的整数标识符。 例如,字符串“#258”表示标识符 258。

枚举搜索可以同时包括 LN 文件及其关联的 .mui 文件。 它可以限制为任何类型的单个二进制模块。 也可以限制为与单个 LN 文件关联的 .mui 文件。 通过为 hModule 参数和非零 LangId 参数指定 LN 文件,搜索可以限制为与该 LN 文件和语言关联的唯一 .mui 文件。

对于找到的每个资源,EnumResourceNamesEx 调用应用程序定义的回调函数 lpEnumFunc,传递它找到的每个资源的名称或 ID,以及传递给 EnumResourceNamesEx的各种其他参数。 传递的名称仅在回调内有效 - 如果传递的名称是字符串指针,则它指向对所有回调调用重复使用的内部缓冲区。

如果资源具有 ID,则 ID 将返回到回调函数;否则,资源名称将返回到回调函数。 有关详细信息,请参阅 EnumResNameProc。

EnumResourceNamesEx 函数继续枚举资源名称,直到回调函数返回 FALSE 或已枚举此类型的所有资源名称。

如果 hModule 指定 LN 文件,并且选择了这两个标志,则枚举的名称对应于驻留在该 LN 文件中的资源或与之关联的 .mui 文件。 如果未找到 .mui 文件,则仅返回 LN 文件中的名称。 找到一个适当的 .mui 文件后,搜索不会继续,因为与单个 LN 文件对应的所有 .mui 文件具有相同的资源名称。

如果 dwFlags 和 LangId 均为零,则该函数的行为类似于 EnumResourceNames。

如果 LangId 为非零,则只会搜索与该语言标识符对应的 .mui 文件。 不会使用语言回退。 如果该语言的 .mui 文件不存在,则枚举将为空(除非该语言的资源存在于 LN 文件中,并且标志也设置为搜索 LN 文件)。

枚举永远不会包含重复项:如果特定语言的资源同时包含在 LN 文件和 .mui 文件中,则名称将仅枚举一次。

例子

有关示例,请参阅 创建资源列表。

注意

libloaderapi.h 标头将 EnumResourceNamesEx 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
目标平台 窗户
标头 libloaderapi.h (包括 Windows.h)
库 Kernel32.lib
DLL Kernel32.dll

另请参阅

概念

EnumResNameProc

EnumResourceLanguagesEx

EnumResourceNames

EnumResourceTypesEx

参考

资源