Compilazione e distribuzione del file MOF localizzato

Le versioni internazionali di Windows XP e versioni successive del sistema operativo sono disponibili in due versioni, ovvero versioni a lingua singola (localizzata) e versioni muI (Multilanguage User Interface). Una versione MUI di Windows può supportare più lingue contemporaneamente.

I driver distribuiti in una versione localizzata di Windows devono contenere una risorsa MOF che contiene la versione indipendente dalla lingua di tutte le classi, nonché la modifica della lingua localizzata e la modifica della lingua inglese americana.

In una versione MUI di Windows, l'immagine del driver deve contenere le versioni in lingua indipendente dalla lingua e dall'inglese americano delle classi WMI. Per ogni lingua aggiuntiva supportata, è possibile inserire un'immagine di sola risorsa nella directory %windir%\system32\drivers\MUI\langid , dove langid è l'LCID di per le impostazioni locali.

Facoltativamente, l'immagine del driver stessa può contenere ogni lingua supportata.

Se una lingua non è supportata da uno di questi meccanismi, viene usata la versione della lingua inglese.

Compilazione di file MOF distinti per ogni lingua

I writer di driver possono usare un file di testo MOF master per contenere la classe di base e tutte le relative modifiche.

È possibile usare il compilatore MOF per generare un file contenente le classi indipendenti dal linguaggio e un file che contenga le classi modificate per un determinato linguaggio.

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

Il parametro dello spazio dei nomi è nel formato MS_XXX, dove XXX è l'LCID per le impostazioni locali da generare. Il file mof creato contiene le classi indipendenti dal linguaggio e il file mfl creato contiene le classi modificate.

Quando si compila il driver nei sistemi operativi basati su NT, è possibile unire i due file usando il comando di copia. In Windows 98/Me il comando di copia non aggiunge correttamente i file Unicode, ma è possibile usare il comando seguente.

wmimofck localizedfile -ymof -zmfl

È possibile combinare un numero qualsiasi di lingue in un singolo file di testo.

Il file localizzato può quindi essere compilato in un file binario con lo stesso metodo dei file MOF che non sono stati localizzati:

mofcomp -B:binaryfile localizedfile

Per una versione a lingua singola di Windows, i driver collegano il file MOF binario come risorsa all'immagine del driver. Per informazioni dettagliate, vedere Compilazione di un file MOF di un driver .

In un sistema MUI, l'immagine del driver stessa deve essere compilata per l'inglese americano. Per ogni lingua aggiuntiva, installare ogni file MOF binario localizzato come risorsa in un file di immagine separato nella directory %windir%\system32\drivers\MUI\langid , dove langid è l'LCID esadecimale per le impostazioni locali (ad esempio, 409 per l'inglese americano). Il nome del file deve essere drivername.sys o drivername.sys.mui, dove drivername.sys è il nome del file binario del driver.

Compilazione di un file MOF per tutti i linguaggi supportati

Se l'immagine del driver conterrà ogni linguaggio supportato, è possibile creare un file MOF che supporti ogni linguaggio. Usando le direttive #pragma nel file di testo MOF, i driver possono anche combinare tutte le classi modificate in un unico file binario. Poiché ogni localizzazione esiste in uno spazio dei nomi distinto, può essere combinata in modo sicuro in un singolo file binario.

Quando si scrive il file di testo MOF combinato, i writer di driver devono precedere ogni dichiarazione di classe modificata con una direttiva #pragma come indicato di seguito

#pragma namespace ("namespace")

dove namespace è lo spazio dei nomi corretto per la dichiarazione. Ad esempio, la dichiarazione di classe modificata per l'inglese americano deve essere preceduta da una dichiarazione del formato:

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

Ad esempio, si dichiara una classe e le relative modifiche come indicato di seguito.

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

[guid(xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx)]
class MyClass 
{
}

#pragma namespace(\\\\.\\root\\wmi\\ms_409)
[amendment, locale(0x407)]
class MyClass
{
}

Usando questo approccio, la compilazione del file MOF binario è identica all'approccio non localizzato. Per informazioni dettagliate, vedere Compilazione di un file MOF di un driver .