EnumResourceNamesA 函数 (libloaderapi.h)

枚举二进制模块中指定类型的资源。 对于 Windows Vista 及更高版本,这通常是 语言中性可移植可执行文件(LN 文件),枚举还将包含包含可本地化语言资源的相应语言特定资源文件(.mui 文件)中的资源。 hModule 还可以指定 .mui 文件,在这种情况下,仅搜索该文件的资源。

语法

BOOL EnumResourceNamesA(
  [in, optional] HMODULE          hModule,
  [in]           LPCSTR           lpType,
  [in]           ENUMRESNAMEPROCA lpEnumFunc,
  [in]           LONG_PTR         lParam
);

参数

[in, optional] hModule

类型:HMODULE

要搜索的模块的句柄。 从 Windows Vista 开始,如果这是一个 LN 文件,则搜索中包含适当的 .mui 文件(如果有)。

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

[in] lpType

类型:LPCTSTR

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

[in] lpEnumFunc

类型:ENUMRESNAMEPROC

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

[in] lParam

类型:LONG_PTR

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

返回值

类型:BOOL

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

言论

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

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

或者,应用程序可以调用 EnumResourceNamesEx,从而更准确地控制枚举的资源。

如果资源具有 ID,则 ID 将传递给回调函数;否则,资源名称将传递给回调函数。 有关详细信息,请参阅 ENUMRESNAMEPROC

EnumResourceNames 函数继续枚举资源,直到回调函数返回 FALSE 或枚举所有资源。

从 Windows Vista 开始,如果 hModule 指定 LN 文件,则枚举的资源可以驻留在 LN 文件或与之关联的 .mui 文件中。 如果未找到 .mui 文件,则仅返回来自 LN 文件的资源。 搜索 .mui 文件的顺序是通常的资源加载程序搜索顺序;有关详细信息,请参阅 用户界面语言管理。 找到一个适当的 .mui 文件后,.mui 文件搜索将停止。 由于与单个 LN 文件对应的所有 .mui 文件具有相同的资源类型,因此只需枚举找到的 .mui 文件中的资源。

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

例子

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

要求

要求 价值
最低支持的客户端 Windows 10 内部版本 20348
支持的最低服务器 Windows 10 内部版本 20348
标头 libloaderapi.h
Kernel32.lib
DLL Kernel32.dll

另请参阅

概念

参考