生成和部署已本地化的 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 的操作系统上生成驱动程序时,可以使用 copy 命令合并这两个文件。 在 Windows 98/Me 上,复制命令不会正确追加 Unicode 文件,但可以使用以下命令。

wmimofck localizedfile -ymof -zmfl

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

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

mofcomp -B:binaryfile localizedfile

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

在 MUI 系统上,驱动程序映像本身必须针对美式英语生成。 对于每种语言,请将每个本地化的二进制 MOF 文件作为资源安装到相应的 %windir%\system32\drivers\MUI\langid 目录中的单独映像文件中,其中 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 文件