Структура FILEMUIINFO (winnls.h)
Содержит сведения о файле, связанные с его использованием с MUI. Большая часть этих данных хранится в данных конфигурации ресурсов для конкретного файла. При извлечении этой структуры с помощью GetFileMUIInfo заполняются не все поля. Используемые поля зависят от флагов, которые приложение передало этой функции.
Синтаксис
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) |
См. также раздел
Многоязыковой интерфейс пользователя