EnumResourceTypesExA 函数 (libloaderapi.h)

枚举与指定的二进制模块关联的资源类型。 搜索可以同时包括 语言中性可移植可执行文件 文件(LN 文件)及其关联的 .mui 文件。 或者,它可以限制为任何类型的单个二进制模块,也可以限制为与单个 LN 文件关联的 .mui 文件。 搜索还可以限制为包含特定语言资源的单个关联的 .mui 文件。

对于找到的每个资源类型,EnumResourceTypesEx 调用应用程序定义的回调函数 lpEnumFunc,传递查找的资源类型,以及传递给 EnumResourceTypesEx的各种其他参数。

语法

BOOL EnumResourceTypesExA(
  [in, optional] HMODULE          hModule,
  [in]           ENUMRESTYPEPROCA lpEnumFunc,
  [in]           LONG_PTR         lParam,
  [in]           DWORD            dwFlags,
  [in]           LANGID           LangId
);

参数

[in, optional] hModule

类型:HMODULE

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

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

[in] lpEnumFunc

类型:ENUMRESTYPEPROC

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

[in] lParam

类型:LONG_PTR

传递给回调函数的应用程序定义值。

[in] dwFlags

类型:DWORD

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

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

[in] LangId

类型:LANGID

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

返回值

类型:BOOL

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

言论

EnumResourceTypesEx 函数继续枚举资源类型,直到回调函数返回 FALSE 或所有资源类型都已枚举。

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

如果 dwFlagsLangId 均为零,则该函数的行为类似于 EnumResourceTypes

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

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

例子

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

注意

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

要求

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

另请参阅

概念

EnumResTypeProc

EnumResourceLanguagesEx

EnumResourceNamesEx

EnumResourceTypes

参考

资源