编译本地化的 MOF 文件

必须编译主 MOF 文件才能创建非限定语言和特定语言 MOF 文件。

在命令提示符处键入以下命令来编译主 MOF 文件。

mofcomp -MOF:Lnmof.mof -MFL:Lsmof.mfl -Amendment:MS_409 Mastermof.mof

运行此命令时,MOF 编译器会根据原始 Mastermof.mof 文件创建两个 MOF 文件。 MOF 编译器会生成一个非限定语言版本 Lnmof.mof,其中移除了所有特定语言的项。 还另外创建了一个特定语言的版本 Lsmof.mof;此文件仅包含 Mastermof.mof 文件中使用 Amended 限定符风格标记的项。

以下代码示例显示了所生成的非限定语言 MOF 文件 (Lnmof.mof) 的内容。

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

Instance of __Namespace
{
  Name = "TEST";
};
#pragma namespace("\\\\.\\root\\TEST")

[LOCALE(1033)] 
class myclass
{
  [key] string Name;
  uint64 Value;
  uint64 Timestamp;
};

以下代码示例显示了所生成的特定语言 MOF 文件 (Lsmof.mfl) 的内容。

#pragma namespace("\\\\.\\root\\TEST")
instance of __namespace{ name="ms_409";};
#pragma namespace("\\\\.\\root\\TEST\\ms_409")

[Description("Localized version of MyClass for American English") :
    Amended, LOCALE(0x409)] 

class myclass
{
    [DisplayName("User Name") : Amended,
    Description("The Name property contains the name of the user") : 
    Amended, key]
     string Name;

    [DisplayName("Time Stamp") : Amended,
    Description("This property shows when the object was created") : 
    Amended] 
     uint64 Timestamp;
};

如果编译带有 Amended 限定符的 MOF 文件,只会生成单独的非限定语言和特定语言 MOF 文件;CIM 存储库不会更新显示新的类信息。 必须使用 MOF 编译器来编译首次编译生成的两个 MOF 文件,然后才有任何类信息可用于 WMI。

编译主 MOF 文件时,只有具有 Amended 风格的限定符会移动到特定语言 MOF 文件。 没有 Amended 风格的限定符不会本地化,并且仅存在于非限定语言 MOF 文件中的基本类定义中。 如果本地化说明不可用,可以对默认说明使用非本地化限定符。

可以使用 pragma amendment 命令,而不是将 Amended 指定为 MOF 编译器的开关。 这些选项之一相当于请求 MOF 文件的特定语言版本和非限定语言版本。 如果使用 pragma amendment 命令或 Amended 命令行选项,必须在命令提示符处使用 -MFL 和 -MOF 选项指定输出文件的名称。

注意

MOF 编译器生成的非限定语言 MOF 文件包含区域设置 ID 的十进制等效项,即使此值以十六进制形式输入也是这样。 在以上示例中,编译器已将 Lnmof.mof 输出文件的值 0x409 转换为十进制数 1033。