Функция 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
);
Параметры
[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_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. Если первым символом строки является знак фунта (#), то остальные символы представляют десятичное число, указывающее
целочисленный идентификатор типа ресурса. Например, строка "No 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 |
См. также
Основные понятия
Справочные материалы