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.sys 或 drivername.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 文件 。