Функция EnumResourceNamesExA (libloaderapi.h)
Перечисляет ресурсы указанного типа, связанные с указанным двоичным модулем. Поиск может включать как LN-файл, так и связанные с ним MUI-файлы, или его можно ограничить несколькими способами.
Синтаксис
BOOL EnumResourceNamesExA(
[in, optional] HMODULE hModule,
LPCSTR lpType,
[in] ENUMRESNAMEPROCA lpEnumFunc,
[in] LONG_PTR lParam,
[in] DWORD dwFlags,
[in] LANGID LangId
);
Параметры
[in, optional] hModule
Тип: HMODULE
Дескриптор модуля для поиска. Как правило, это файл LN, и если установлен флаг RESOURCE_ENUM_MUI , в поиск включаются соответствующие MUI-файлы. Кроме того, это может быть дескриптор MUI-файла или другого LN-файла.
Если этот параметр имеет значение NULL, это эквивалентно передаче дескриптора в модуль, используемый для создания текущего процесса.
lpType
Тип: LPCSTR
Тип ресурса, для которого выполняется перечисление имени. Кроме того, вместо указателя этот параметр может быть MAKEINTRESOURCE(ID), где ID — это целочисленное значение, представляющее предопределенный тип ресурса. Список стандартных типов ресурсов см. в разделе Типы ресурсов. Дополнительные сведения см. в разделе Примечания ниже.
[in] lpEnumFunc
Тип: ENUMRESNAMEPROC
Указатель на функцию обратного вызова, вызываемую для каждого перечисленного имени ресурса. Дополнительные сведения см. в разделе EnumResNameProc.
[in] lParam
Тип: LONG_PTR
Определяемое приложением значение, передаваемое функции обратного вызова. Этот параметр можно использовать при проверке ошибок.
[in] dwFlags
Тип: DWORD
Тип файла для поиска. Поддерживаются следующие значения. Обратите внимание, что если dwFlags равно нулю, предполагается, что будут указаны флаги RESOURCE_ENUM_LN и RESOURCE_ENUM_MUI .
Значение | Значение |
---|---|
|
Найдите ресурсы в MUI-файлах, связанных с LN-файлом, указанным в hModule , и с текущими языковыми параметрами, следуя обычной стратегии загрузчика ресурсов (см . раздел Управление языком пользовательского интерфейса). Кроме того, если LangId не равно нулю, поиск будет выполняться только в указанном MUI-файле. Обычно этот флаг следует использовать только в том случае, если hModule ссылается на LN-файл. Если hModule ссылается на MUI-файл, то этот файл фактически охватывается флагом RESOURCE_ENUM_LN , несмотря на имя флага. |
|
Выполняет поиск в файле, указанном в hModule, независимо от того, является ли файл LN, другим типом LN-файла или MUI-файлом. |
|
Выполняет дополнительную проверку раздела ресурса и его ссылки в заголовке PE, выполняя перечисление, чтобы убедиться, что ресурсы имеют правильный формат. Проверка устанавливает максимальное ограничение в 260 символов для каждого перечисленного имени. |
[in] LangId
Тип: LANGID
Язык локализации, используемый для фильтрации поиска в модуле MUI. Этот параметр используется, только если флаг RESOURCE_ENUM_MUI установлен в dwFlags. Если указано ноль, все MUI-файлы, соответствующие текущим языковым предпочтениям, включаются в поиск в соответствии с обычной стратегией загрузчика ресурсов (см . раздел Управление языком пользовательского интерфейса). Если указан ненулевой идентификатор LangId , поиск будет выполняться только в mui-файле, который соответствует указанному LangId.
Возвращаемое значение
Тип: BOOL
Функция TRUE в случае успешного выполнения или FALSE , если функция не находит ресурс указанного типа или если функция завершается сбоем по другой причине. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если IS_INTRESOURCE(lpszType) имеет значение TRUE, то lpszType задает целочисленный идентификатор заданного типа ресурса. В противном случае это указатель на строку, завершаемую null. Если первым символом строки является знак фунта (#), остальные символы представляют собой десятичное число, указывающее
целочисленный идентификатор типа ресурса. Например, строка "#258" представляет идентификатор 258.
Поиск перечисления может включать как LN-файл, так и связанные с ним MUI-файлы. Его можно ограничить одним двоичным модулем любого типа. Он также может быть ограничен MUI-файлами, связанными с одним LN-файлом. Указав LN-файл для параметра hModule и ненулевого параметра LangId , поиск можно ограничить уникальным MUI-файлом, связанным с этим LN-файлом и языком.
Для каждого найденного ресурса EnumResourceNamesEx вызывает определяемую приложением функцию обратного вызова lpEnumFunc, передавая имя или идентификатор каждого найденного ресурса, а также различные другие параметры, которые были переданы в EnumResourceNamesEx.
Если ресурс имеет идентификатор, идентификатор возвращается в функцию обратного вызова; в противном случае имя ресурса возвращается функции обратного вызова. Дополнительные сведения см. в разделе EnumResNameProc.
Функция EnumResourceNamesEx продолжает перечислять имена ресурсов, пока функция обратного вызова не вернет значение FALSE или не будут перечислены все имена ресурсов для этого типа.
Если hModule указывает LN-файл и выбраны оба флага, перечисляемые имена соответствуют ресурсам, находящимся либо в этом LN-файле, либо в связанных с ним MUI-файлах. Если MUI-файлы не найдены, возвращаются только имена из LN-файла. После того как будет найден один подходящий MUI-файл, поиск не будет продолжен, так как все MUI-файлы, соответствующие одному LN-файлу, имеют одинаковые имена ресурсов.
Если dwFlags и LangId равны нулю, то функция ведет себя как EnumResourceNames.
Если значение LangId не равно нулю, поиск будет выполняться только в MUI-файле, соответствующем этому идентификатору языка. Резервные языковые резервы не будут использоваться. Если MUI-файл для этого языка не существует, перечисление будет пустым (если ресурсы для этого языка не существуют в LN-файле, а флаг также установлен для поиска в LN-файле).
Перечисление никогда не содержит дубликатов: если ресурсы для определенного языка содержатся как в LN-файле, так и в MUI-файле, имя будет перечислено только один раз.
Примеры
Пример см. в разделе Создание списка ресурсов.
Примечание
Заголовок libloaderapi.h определяет EnumResourceNamesEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | libloaderapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
См. также
Основные понятия
Справочные материалы