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_INTRESOURCE(lpszType) TRUE,则 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 |