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


Функция GetFileMUIInfo (winnls.h)

Извлекает сведения о файле, связанные с ресурсами.

Синтаксис

BOOL GetFileMUIInfo(
  [in]                DWORD        dwFlags,
  [in]                PCWSTR       pcwszFilePath,
  [in, out, optional] PFILEMUIINFO pFileMUIInfo,
  [in, out]           DWORD        *pcbFileMUIInfo
);

Параметры

[in] dwFlags

Флаги, указывающие извлекаемую информацию. Допускается любое сочетание следующих флагов. Значение флагов по умолчанию — MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM.

Значение Значение
MUI_QUERY_TYPE
Получите одно из следующих значений в элементе dwFileTypeобъекта FILEMUIINFO:
  • MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL: указанный входной файл не содержит данных конфигурации ресурсов. Таким образом, это не LN-файл и не файл ресурсов для конкретного языка. Этот тип файлов является типичным для более старых исполняемых файлов. Если указан этот тип файла, функция не будет получать полезные сведения для других типов.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN. Входной файл является файлом LN.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI. Входной файл — это файл ресурсов для конкретного языка, связанный с файлом LN.
MUI_QUERY_CHECKSUM
Получение контрольной суммы ресурса входного файла в элементе pChecksumfileMUIINFO. Если входной файл не содержит данных конфигурации ресурсов, этот элемент структуры содержит значение 0.
MUI_QUERY_LANGUAGE_NAME
Получение языка, связанного с входным файлом. Для файла ресурсов для конкретного языка этот флаг запрашивает связанный язык. Для LN-файла этот флаг запрашивает язык конечных резервных ресурсов для модуля, который может находиться в LN-файле или в отдельном файле ресурсов для конкретного языка, на который ссылаются данные конфигурации ресурсов LN-файла. Дополнительные сведения см. в разделе «Примечания».
MUI_QUERY_RESOURCE_TYPES
Получение списков типов ресурсов в файлах ресурсов для конкретного языка и LN-файлах, указанных в данных конфигурации ресурсов. Сведения о том, как получить доступ к этой информации, см. в разделе Примечания.

[in] pcwszFilePath

Указатель на строку, завершающуюся null, указывающую путь к файлу. Обычно файл является файлом LN или файлом ресурсов для конкретного языка. Если это не один из этих типов, единственным значимым значением, которое извлекает функция, является MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL. Функция получает это значение только в том случае, если установлен флаг MUI_QUERY_RESOURCE_TYPES.

[in, out, optional] pFileMUIInfo

Указатель на буфер, содержащий сведения о файлах в структуре FILEMUIINFO и, возможно, в данных, следующих за этой структурой. Информационный буфер может быть гораздо больше размера самой структуры. В зависимости от параметров флага функция может хранить значительные сведения, следующие за структурой, при смещениях, полученных в структуре. Дополнительные сведения см. в разделе «Примечания».

Кроме того, приложение может задать для этого параметра значение NULL , если pcbFileMUIInfo имеет значение 0. В этом случае функция извлекает необходимый размер информационного буфера в pcbFileMUIInfo.

Примечание Если значение pFileMUIInfo не равно NULL, то для элемента dwSize необходимо задать размер структуры FILEMUIINFO (включая информационный буфер), а для элемента dwVersion — текущую версию 0x001.
 

[in, out] pcbFileMUIInfo

Указатель на размер буфера (в байтах) для сведений о файле, указанных pFileMUIInfo. При успешном возвращении из функции этот параметр содержит размер буфера сведений о файлах и структуру FILEMUIINFO , которая его содержит.

Кроме того, приложение может задать для этого параметра значение 0, если в pFileMUIInfo задано значение NULL. В этом случае функция извлекает требуемый размер буфера сведений о файле в pcbFileMUIInfo. Чтобы выделить правильный объем памяти, это значение должно быть добавлено к размеру самой структуры FILEMUIINFO .

Примечание Значение этого параметра должно совпадать со значением члена dwSizefileMUIINFO , если значение pFileMUIInfo не равно NULL.
 

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

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

Комментарии

Для флага MUI_QUERY_LANGUAGE_NAME эта функция получает смещение в байтах от начала FILEMUIINFO в элементе dwLanguageNameOffset .

Ниже приведен пример кода, который обращается к имени языка, связанному с входным файлом:

LPWSTR lpszLang = reinterpret_cast<LPWSTR>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwLanguageNameOffset);

Для флага MUI_QUERY_RESOURCE_TYPES эта функция получает сведения о файле ресурсов для конкретного языка в следующих элементах FILEMUIINFO :

  • Элемент dwTypeIDMUIOffset содержит смещение в массив идентификаторов ресурсов, содержащихся в файле ресурсов для конкретного языка.
  • Член dwTypeIDMUISize содержит размер массива идентификаторов ресурсов для файла ресурсов для конкретного языка.
  • Элемент dwTypeNameMUIOffset содержит смещение в массив имен ресурсов, содержащихся в файле ресурсов для конкретного языка.
Если входной файл является файлом LN, функция заполняет все указанные выше элементы структуры. Кроме того, он заполняет следующие элементы:
  • Член dwTypeIDMainOffset содержит смещение в массив идентификаторов ресурсов, содержащихся в LN-файле.
  • Элемент dwTypeIDMainSize содержит размер массива идентификаторов ресурсов для LN-файла.
  • Элемент dwTypeNameMainOffset содержит смещение до массива имен ресурсов, содержащихся в файле.
Ниже приведен пример кода, который обращается к массиву идентификаторов ресурсов в файле LN.
DWORD *pdwTypeID = reinterpret_cast<DWORD *>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeIDMainOffset);

Примечание Доступ к спискам ресурсов для конкретного языка предоставляется таким же образом.
 
Ниже приведен пример кода для доступа к многостроонному массиву имен ресурсов в файле LN.
LPWSTR lpszNames = reinterpret_cast<LPWSTR>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeNameMainOffset);

Примечание Доступ к спискам ресурсов для конкретного языка предоставляется таким же образом.
 
Каждый из примеров кода использует два повторных приведения. Сначала код приводит к BYTE*, чтобы арифметика указателя для смещения выполнялось в байтах. Затем код приводит полученный указатель к нужному типу.

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

DWORD ix = pFileMUIInfo->dwLanguageNameOffset - 
        offsetof(struct _FILEMUIINFO, abBuffer);
LPWSTR lpszLang = reinterpret_cast<LPWSTR>(&(pFileMUIInfo->abBuffer[ix]));

Подпись C#

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetFileMUIInfo(
            System.UInt32 dwFlags,
            System.String pcwszFilePath,
            ref FILEMUIINFO pFileMUIInfo,
            ref System.UInt32 pcbFileMUIInfo
            );

Требования

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

См. также

FILEMUIINFO

GetThreadUILanguage

Многоязыковой интерфейс пользователя

Функции многоязычного пользовательского интерфейса

SetThreadPreferredUILanguages

SetThreadUILanguage