Поделиться через


Функция 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 .

Значение Значение
RESOURCE_ENUM_MUI
0x0002
Найдите ресурсы в MUI-файлах, связанных с LN-файлом, указанным в hModule , и с текущими языковыми параметрами, следуя обычной стратегии загрузчика ресурсов (см . раздел Управление языком пользовательского интерфейса). Кроме того, если 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. Этот параметр используется, только если флаг 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

См. также

Основные понятия

EnumResNameProc

EnumResourceLanguagesEx

EnumResourceNames

EnumResourceTypesEx

Справочные материалы

Ресурсы