Поделиться через


Создание и развертывание локализованного MOF-файла

Международные версии Windows XP и более поздних версий операционной системы поставляются в двух вариантах: одноязычные (локализованные) версии и многоязыковые версии пользовательского интерфейса (MUI). Версия windows MUI может поддерживать несколько языков одновременно.

Драйверы, развернутые в локализованной версии Windows, должны содержать ресурс MOF, содержащий не зависящее от языка версию всех классов, а также локализованную языковую поправку и поправку на американский английский язык.

В версии многоязыковой версии Windows образ драйвера должен содержать нейтральные от языка и американский английский версии классов WMI. Для каждого дополнительного поддерживаемого языка образ только для ресурсов можно поместить в каталог %windir%\system32\drivers\MUI\langid , где langid — это код языка для языкового стандарта.

При необходимости образ драйвера может содержать все поддерживаемые языки.

Если язык не поддерживается одним из этих механизмов, используется версия на английском языке.

Создание отдельных MOF-файлов для каждого языка

Модули записи драйверов могут использовать один master MOF-файл для хранения базового класса и всех его изменений.

С помощью компилятора MOF можно создать файл, содержащий классы, не зависящие от языка, а также файл, содержащий измененные классы для определенного языка.

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

Параметр пространства имен имеет форму MS_XXX, где XXX — это LCID для создаваемого языкового стандарта. Созданный MOF-файл содержит классы, не зависящие от языка, а созданный MFL-файл содержит измененные классы.

При сборке драйвера в операционных системах на основе NT можно объединить два файла с помощью команды копирования. В Windows 98/Me команда копирования неправильно добавляет файлы Юникода, но можно использовать следующую команду.

wmimofck localizedfile -ymof -zmfl

Вы можете объединить любое количество языков в один текстовый файл.

Затем локализованный файл можно скомпилировать в двоичный файл тем же методом, что и для MOF-файлов, которые не были локализованы:

mofcomp -B:binaryfile localizedfile

Для одноязычной версии Windows драйверы присоединяют двоичный MOF-файл в качестве ресурса к образу драйвера. Дополнительные сведения см. в разделе Компиляция MOF-файла драйвера .

В системе многоязыкового интерфейса сам образ драйвера должен быть создан для американского английского языка. Для каждого дополнительного языка установите каждый локализованный двоичный MOF-файл в виде ресурса в отдельном файле образа в соответствующем каталоге %windir%\system32\drivers\MUI\langid , где langid — это шестнадцатеричный LCID для языкового стандарта (например, 409 для американского английского языка). Имя файла должно быть drivername.sys или drivername.sys.mui, где drivername.sys — это имя двоичного файла драйвера.

Создание одного MOF-файла для всех поддерживаемых языков

Если образ драйвера будет содержать все поддерживаемые языки, существует более простой способ создать MOF-файл, поддерживающий каждый язык. Используя директивы #pragma в текстовом MOF-файле, драйверы также могут объединять все измененные классы в одном двоичном файле. Так как каждая локализация существует в отдельном пространстве имен, их можно безопасно объединить в один двоичный файл.

При записи объединенного текстового 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-файла драйвера .