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
);

parameters

[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_LNRESOURCE_ENUM_MUI 标志。

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

[in] LangId

类型: LANGID

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

返回值

类型: BOOL

如果成功,则为 函数 TRUE ;如果函数未找到指定类型的资源,则为 FALSE;如果函数因其他原因而失败,则为 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 文件具有相同的资源名称。

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

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

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

示例

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

注意

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

要求

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

另请参阅

概念性

EnumResNameProc

EnumResourceLanguagesEx

EnumResourceNames

EnumResourceTypesEx

引用

资源