生成和部署本地化 MOF 文件

Windows XP 的国际版本和作系统的更高版本有两种类型:单语言(本地化)版本和多语言用户界面(MUI)版本。 MUI 版本的 Windows 可以同时支持多种语言。

在本地化版本的 Windows 上部署的驱动程序应包含 MOF 资源,其中包含所有类的语言中性版本,以及本地化语言修正案和美国英语修正。

在 MUI 版本的 Windows 上,驱动程序映像本身应包含 WMI 类的语言中性和美国英语版本。 对于支持的每种其他语言,都可以在 %windir%\system32\drivers\MUI\langid 目录中放置一个仅限资源的映像,其中 langid 是区域设置的 LCID。

(可选)驱动程序映像本身可以包含支持的每种语言。

如果其中一种机制不支持语言,则使用英语版本。

为每个语言生成不同的 MOF 文件

驱动程序编写器可以使用一个主 MOF 文本文件来包含基本类及其所有的修订内容。

可以使用 MOF 编译器 生成包含非特定语言类的文件,以及一个文件来包含特定语言的已修改类。

mofcomp -amendment:namespace [ -MOF:mof] [ -MFL:mfl] masterfile

命名空间参数的格式为 MS_XXX,其中 XXX 是要生成的区域设置的 LCID。 创建的 mof 文件包含非特定语言类,创建的 mfl 文件包含修订后的类。

在基于 NT 的作系统上生成驱动程序时,可以使用复制命令合并这两个文件。 在 Windows 98/Me 上,复制命令无法正确追加 Unicode 文件,但可以使用以下命令。

wmimofck localizedfile -ymof -zmfl

可以将任意数量的语言合并到单个文本文件中。

然后,可以通过与尚未本地化的 MOF 文件相同的方法将本地化文件编译为二进制文件:

mofcomp -B:binaryfile localizedfile

对于 Windows 的单语言版本,驱动程序将二进制 MOF 作为资源附加到驱动程序映像。 有关详细信息,请参阅 编译驱动程序的 MOF 文件

在 MUI 系统上,驱动程序映像本身必须为美国英语制作。 对于每个其他语言,请在相应的 %windir%\system32\drivers\MUI\langid 目录的单独映像文件中将每个本地化的二进制 MOF 文件安装为资源,其中 langid 是区域设置的十六进制 LCID(例如,美国英语为 409)。 文件名必须是 drivername.sysdrivername.sys.mui,其中 drivername.sys 是驱动程序二进制文件的名称。

为所有支持的语言生成一个 MOF 文件

如果驱动程序映像将包含每个受支持的语言,则生成支持每种语言的 MOF 文件的方法更简单。 通过使用 MOF 文本文件中的 #pragma 指令,驱动程序还可以在一个二进制文件中合并所有修改后的类。 由于每个本地化都存在于不同的命名空间中,因此它们可以安全地组合在一个二进制文件中。

编写合并的 MOF 文本文件时,驱动程序编写器必须在每个修改后的类声明前面加上 一个 #pragma 指令,如下所示

#pragma namespace ("namespace")

其中 namespace 是声明的正确命名空间。 例如,针对美国英语的修订后的类声明必须以以下形式的声明开头:

#pragma namespace ("\\\\.\\root\\wmi\\ms_409")

例如,可以按如下方式声明一个类及其修订。

#pragma namespace ("\\\\.\\root\\wmi)

[guid(xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx)]
class MyClass 
{
}

#pragma namespace(\\\\.\\root\\wmi\\ms_409)
[amendment, locale(0x407)]
class MyClass
{
}

使用此方法,生成二进制 MOF 文件与非局部化方法相同。 有关详细信息,请参阅 编译驱动程序的 MOF 文件