ローカライズされた MOF ファイルのビルドと展開
Windows XP およびそれ以降のバージョンのオペレーティング システムの国際バージョンには、単一言語 (ローカライズ) バージョンと多言語ユーザー インターフェイス (MUI) バージョンの 2 種類があります。 WINDOWS の MUI バージョンでは、複数の言語を同時にサポートできます。
ローカライズされたバージョンの Windows に展開されるドライバーには、すべてのクラスの言語に依存しないバージョンを含む MOF リソースと、ローカライズされた言語修正とアメリカ英語の修正が含まれている必要があります。
WINDOWS の MUI バージョンでは、ドライバー イメージ自体に WMI クラスの言語に依存しないバージョンとアメリカ英語バージョンが含まれている必要があります。 サポートされている追加言語ごとに、リソースのみのイメージを %windir%\system32\drivers\MUI\langid ディレクトリに配置できます。langid はロケールの LCID です。
必要に応じて、ドライバー イメージ自体に、サポートされているすべての言語を含めることができます。
これらのメカニズムのいずれかで言語がサポートされていない場合は、英語バージョンが使用されます。
言語ごとに異なる MOF ファイルを作成する
ドライバー ライターは、1 つのマスター MOF テキスト ファイルを使用して、基本クラスとそのすべての修正を含めることができます。
MOF コンパイラ を使用すると、言語に依存しないクラスを含むファイルと、特定の言語の修正されたクラスを含むファイルを生成できます。
mofcomp -amendment:namespace [ -MOF:mof] [ -MFL:mfl] masterfile
名前空間パラメーターの形式は MS_XXX です。XXX は、生成されるロケールの LCID です。 作成された mof ファイルには言語に依存しないクラスが含まれており、作成された mfl ファイルには修正されたクラスが含まれています。
NT ベースのオペレーティング システムでドライバーをビルドする場合は、コピー コマンドを使用して 2 つのファイルをマージできます。 Windows 98/Me では、copy コマンドは Unicode ファイルを正しく追加しませんが、次のコマンドを使用できます。
wmimofck localizedfile -ymof -zmfl
任意の数の言語を 1 つのテキスト ファイルに結合できます。
ローカライズされたファイルは、ローカライズされていない MOF ファイルの場合と同じ方法でバイナリ ファイルにコンパイルできます。
mofcomp -B:binaryfile localizedfile
Windows の単一言語バージョンの場合、ドライバーはバイナリ MOF をリソースとしてドライバー イメージにアタッチします。 詳細については、「 ドライバーの MOF ファイルのコンパイル」を参照してください。
MUI システムでは、ドライバー イメージ自体をアメリカ英語用に構築する必要があります。 追加言語ごとに、ローカライズされたバイナリ MOF ファイルをそれぞれリソースとして、適切な %windir%\system32\drivers\MUI\llangid ディレクトリ内の個別のイメージ ファイルにインストールします。langid はロケールの 16 進 LCID です (たとえば、アメリカ英語の場合は 409)。 ファイル名は drivername.sys または drivername.sys.mui である必要があります。ここで、drivername.sysはドライバー バイナリの名前です。
サポートされているすべての言語用に 1 つの MOF ファイルをビルドする
ドライバー イメージにサポートされているすべての言語が含まれる場合は、すべての言語をサポートする MOF ファイルを構築する簡単な方法があります。 MOF テキスト ファイルで #pragma ディレクティブを使用することで、ドライバーは修正されたすべてのクラスを 1 つのバイナリで結合することもできます。 各ローカライズは個別の名前空間に存在するため、1 つのバイナリで安全に結合できます。
結合された 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 ファイルのコンパイル」を参照してください。