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


Структура FILEMUIINFO (winnls.h)

Содержит сведения о файле, связанные с его использованием с MUI. Большая часть этих данных хранится в данных конфигурации ресурсов для конкретного файла. При извлечении этой структуры с помощью GetFileMUIInfo заполняются не все поля. Используемые поля зависят от флагов, которые приложение передало этой функции.

Примечание Приложения MUI могут использовать макросы MUI для доступа к этой структуре.
 

Синтаксис

typedef struct _FILEMUIINFO {
  DWORD dwSize;
  DWORD dwVersion;
  DWORD dwFileType;
  BYTE  pChecksum[16];
  BYTE  pServiceChecksum[16];
  DWORD dwLanguageNameOffset;
  DWORD dwTypeIDMainSize;
  DWORD dwTypeIDMainOffset;
  DWORD dwTypeNameMainOffset;
  DWORD dwTypeIDMUISize;
  DWORD dwTypeIDMUIOffset;
  DWORD dwTypeNameMUIOffset;
  BYTE  abBuffer[8];
} FILEMUIINFO, *PFILEMUIINFO;

Члены

dwSize

Размер структуры, включая буфер, который можно расширить за 8 объявленных байтов. Минимально допустимое значение — sizeof(FILEMUIINFO).

dwVersion

Версия структуры. Текущая версия — 0x001.

dwFileType

Тип файла. Возможны следующие значения:

  • MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL. Входной файл не содержит данных конфигурации ресурсов. Этот тип файлов является типичным для более старых исполняемых файлов. Если этот тип файла указан, другие типы файлов не будут предоставлять полезные сведения.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN. Входной файл является файлом LN.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI. Входной файл является файлом ресурсов для конкретного языка.

pChecksum[16]

Указатель на 128-битовую контрольную сумму для файла, если это файл LN или файл ресурсов для конкретного языка.

pServiceChecksum[16]

Указатель на 128-битовую контрольную сумму для файла, используемую для обслуживания.

dwLanguageNameOffset

Смещение (в байтах) от начала структуры до строки имени языка для файла ресурсов для конкретного языка или до конечной резервной строки имени языка для LN-файла.

dwTypeIDMainSize

Размер массива, для которого смещение обозначается dwTypeIDMainOffset. Размер также соответствует количеству строк в многостроковом массиве, указанном dwTypeNameMainOffset.

dwTypeIDMainOffset

Смещение (в байтах) от начала структуры до массива DWORD, перечисляющего типы ресурсов, содержащиеся в файле LN.

dwTypeNameMainOffset

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

dwTypeIDMUISize

Размер массива со смещением, указанным dwTypeIDMUIOffset. Размер также соответствует количеству строк в ряду строк, указанных dwTypeNameMUIOffset.

dwTypeIDMUIOffset

Смещение (в байтах) от начала структуры до массива DWORD, перечисляющего типы ресурсов, содержащиеся в файле LN.

dwTypeNameMUIOffset

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

abBuffer[8]

Остаток выделенной памяти для этой структуры. Сведения о правильном использовании этого массива см. в разделе Примечания.

Комментарии

Все смещения относятся к основанию структуры. Смещение 0 указывает, что данные недоступны.

Ниже приведен пример, показывающий, как получить доступ к данным для позиции в структуре, которая описывается смещением. Этот пример обращается к строке имени языка с позицией, определенной dwLanguageNameOffset.

PFILEMUIINFO pFileMUIInfo = NULL;

Allocate_pFileMUIInfo_AndPassTo_GetFileMUIInfo(&pFileMUIInfo);

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

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

Кроме того, код можно написать, как показано ниже. Эффект тот же; выбор строго один из стилей.

PFILEMUIINFO pFileMUIInfo = NULL;

Allocate_pFileMUIInfo_AndPassTo_GetFileMUIInfo(&pFileMUIInfo);

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

Подпись C#

unsafe public struct FILEMUIINFO
        {
            public System.UInt32 dwSize;
            public System.UInt32 dwVersion;
            public System.UInt32 dwFileType;
            public fixed System.Byte pChecksum[16];
            public fixed System.Byte pServiceChecksum[16];
            public System.UInt32 dwLanguageNameOffset;
            public System.UInt32 dwTypeIDMainSize;
            public System.UInt32 dwTypeIDMainOffset;
            public System.UInt32 dwTypeNameMainOffset;
            public System.UInt32 dwTypeIDMUISize;
            public System.UInt32 dwTypeIDMUIOffset;
            public System.UInt32 dwTypeNameMUIOffset;
            public fixed System.Byte abBuffer[8];
        }

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть winnls.h (включая Windows.h)

См. также раздел

GetFileMUIInfo

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

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

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