Создание и развертывание локализованного 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 можно объединить два файла с помощью команды копирования. В Windows 98/Me команда копирования неправильно добавляет файлы Юникода, но можно использовать следующую команду.

wmimofck localizedfile -ymof -zmfl

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

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

mofcomp -B:binaryfile localizedfile

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

В системе MUI образ драйвера должен быть построен для американского английского языка. Для каждого дополнительного языка установите каждый локализованный двоичный MOF-файл в качестве ресурса в отдельном файле образа в соответствующем %windir%\system32\drivers\MUI\langid directory, где 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-файла драйвера .