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
从结构的开头到枚举 LN 文件中包含的资源类型的 DWORD 数组的偏移量(以字节为单位)。
dwTypeNameMainOffset
从结构的开头到枚举 LN 文件中包含的资源名称的多字符串数组中的一系列以 null 结尾的字符串的偏移量(以字节为单位)。
dwTypeIDMUISize
具有 dwTypeIDMUIOffset 指示偏移量的数组的大小。 大小还对应于 dwTypeNameMUIOffset 指示的字符串系列中的字符串数。
dwTypeIDMUIOffset
从结构的开头到枚举 LN 文件中包含的资源类型的 DWORD 数组的偏移量(以字节为单位)。
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) |