Функция EnumResourceTypesExW (libloaderapi.h)

Перечисляет типы ресурсов, связанные с указанным двоичным модулем. Поиск может включать как не зависящий от языка переносимый исполняемый файл (LN-файл ), так и связанные с ним MUI-файлы. Кроме того, его можно ограничить одним двоичным модулем любого типа или MUI-файлами, связанными с одним LN-файлом. Поиск также может быть ограничен одним связанным MUI-файлом, который содержит ресурсы для определенного языка.

Для каждого найденного типа ресурса EnumResourceTypesEx вызывает определяемую приложением функцию обратного вызова lpEnumFunc, передавая найденный тип ресурса, а также различные другие параметры, переданные в EnumResourceTypesEx.

Синтаксис

BOOL EnumResourceTypesExW(
  [in, optional] HMODULE          hModule,
  [in]           ENUMRESTYPEPROCW lpEnumFunc,
  [in]           LONG_PTR         lParam,
  [in]           DWORD            dwFlags,
  [in]           LANGID           LangId
);

Параметры

[in, optional] hModule

Тип: HMODULE

Дескриптор модуля для поиска. Обычно это LN-файл, и если установлен флаг RESOURCE_ENUM_MUI , в поиск можно включить соответствующие MUI-файлы. Кроме того, это может быть дескриптор MUI-файла или другого LN-файла.

Если этот параметр имеет значение NULL, это эквивалентно передаче дескриптора в модуль, используемый для создания текущего процесса.

[in] lpEnumFunc

Тип: ENUMRESTYPEPROC

Указатель на функцию обратного вызова, вызываемую для каждого перечислимого типа ресурса. Дополнительные сведения см. в разделе EnumResTypeProc.

[in] lParam

Тип: LONG_PTR

Определяемое приложением значение, передаваемое функции обратного вызова.

[in] dwFlags

Тип: DWORD

Тип файла для поиска. Поддерживаются следующие значения. Обратите внимание, что если dwFlags равно нулю, предполагается, что будут указаны флаги RESOURCE_ENUM_LN и RESOURCE_ENUM_MUI .

Значение Значение
RESOURCE_ENUM_MUI
0x0002
Выполните поиск типов ресурсов в одном из MUI-файлов, связанных с файлом, указанным в hModule , и с текущими языковыми предпочтениями, следуя обычной стратегии загрузчика ресурсов (см. раздел Управление языком пользовательского интерфейса). Кроме того, если LangId не является нулевым, будет выполняться поиск только в MUI-файле языка, указанного в LangId . Обычно этот флаг следует использовать, только если hModule ссылается на LN-файл. Если hModule ссылается на MUI-файл, то этот файл фактически охватывается флагом RESOURCE_ENUM_LN , несмотря на имя флага.
RESOURCE_ENUM_LN
0x0001
Выполняет поиск только в файле, указанном hModule, независимо от того, является ли файл LN или MUI-файлом.
RESOURCE_ENUM_VALIDATE
0x0008
Выполняет дополнительную проверку раздела ресурса и его ссылки в заголовке PE, выполняя перечисление, чтобы убедиться, что ресурсы правильно отформатированы. Проверка устанавливает максимальное ограничение в 260 символов для каждого перечисленного типа.

[in] LangId

Тип: LANGID

Язык, используемый для фильтрации поиска в модуле MUI. Этот параметр используется, только если флаг RESOURCE_ENUM_MUI установлен в dwFlags. Если указан ноль, все MUI-файлы, соответствующие текущим языковым предпочтениям, включаются в поиск в соответствии с обычной стратегией загрузчика ресурсов (см. раздел Управление языком пользовательского интерфейса). Если указан ненулевой идентификатор LangId , поиск будет выполняться только в mui-файле, который соответствует указанному LangId.

Возвращаемое значение

Тип: BOOL

Возвращает значение TRUE в случае успешного выполнения или FALSE , если функция не находит ресурс указанного типа или если функция завершается сбоем по другой причине. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция EnumResourceTypesEx продолжает перечислять типы ресурсов, пока функция обратного вызова не вернет значение FALSE или не будут перечислены все типы ресурсов.

Если hModule указывает LN-файл и выбраны оба флага, перечисляемые типы соответствуют ресурсам, размещенным в файле LN или в связанных с ним MUI-файлах. Если MUI-файлы не найдены, возвращаются только типы из LN-файла. После того как будет найден один подходящий MUI-файл, поиск не будет продолжен, так как все MUI-файлы, соответствующие одному LN-файлу, имеют одинаковые типы ресурсов.

Если dwFlags и LangId равны нулю, то функция ведет себя как EnumResourceTypes.

Если LangId не является нулевым, будет выполняться поиск только в MUI-файле, соответствующем этому идентификатору языка. Резервные языковые резервы не будут использоваться. Если MUI-файл для этого языка не существует, перечисление будет пустым (если только ресурсы для этого языка не существуют в LN-файле, а флаг также установлен для поиска в LN-файле).

Перечисление никогда не включает дубликаты: если ресурсы для определенного языка содержатся как в файле LN, так и в MUI-файле, тип будет перечислен только один раз.

Примеры

Пример см. в разделе Создание списка ресурсов.

Примечание

Заголовок libloaderapi.h определяет EnumResourceTypesEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header libloaderapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

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

EnumResTypeProc

EnumResourceLanguagesEx

EnumResourceNamesEx

EnumResourceTypes

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

Ресурсы