mofcomp

マネージド オブジェクト フォーマット (MOF) コンパイラは、MOF ステートメントを含むファイルを解析し、そのファイルで定義されているクラスとクラス インスタンスを WMI リポジトリに追加します。 MOF ファイルは通常、提供されるシステムのインストール中に自動的にコンパイルされますが、このツールを使用して MOF ファイルをコンパイルすることもできます。

mofcomp.exe の検索と使用の詳細については、「WMI 管理ツールの使用」を参照してください。 WMI リポジトリからクラスとインスタンスを削除する方法については、pragma deleteclass プリプロセッサ コマンドを参照してください。

次のコード例は、ファイルで MOF コンパイラを実行する方法を示しています。

mofcomp
  [-autorecover]
  [-check]
  [-N:<namespacepath>]
  [-class:createonly | -class:forceupdate | 
   -class:safeupdate | -class:updateonly ] 
  [-instance:updateonly | -instance:createonly]
  [-B:<filename>]
  [-WMI]
  [-P:<Password>]
  [-U:<UserName>]
  [-A:<Authority>]
  [-MOF:<path>] 
  [-MFL:<path>] 
  [-AMENDMENT:<Locale>]
  [-ER:<ResourceName>]
  [-L:<ResourceLocale>] 
  <MOFfile>

スイッチ

-autorecover

指定した MOF ファイルを、リポジトリ回復時にコンパイルされるファイルの一覧に追加します。 自動バックアップ MOF ファイルの一覧は、レジストリ キーに格納されます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\

autorecover コマンドを使用する MOF ファイルはリモート コンピューターにある MOF ファイルを回復できないため、このレジストリ エントリに一覧表示されている MOF ファイルはローカル コンピューターに存在する必要があります。

注意

WMI に障害が発生して再起動した場合に、マネージド オブジェクトのすべての WMI クラス定義が "WMI リポジトリ" に復元されるようにするには、マネージド オブジェクト フォーマット (MOF) ファイルで #pragma autorecover プリプロセッサ命令を使用します。

-check

コンパイラが構文チェックだけを実行して適切なエラー メッセージを出力することを要求します。 このスイッチでは、他のスイッチを使用できません。 このスイッチを使用すると、Windows Management Instrumentation (WMI) への接続は確立されず、WMI リポジトリに対する変更は行われません。

-N:<namespacepath>

*namespacepath* として指定した名前空間に、コンパイラが MOF ファイルを読み込むことを要求します。 このスイッチを使用しない限り、コンパイルされた MOF は既定の Mofcomp 名前空間 root\\default に読み込まれます。 プリプロセッサ コマンド **\#pragma 名前空間 ("***namespace path***")** を MOF ファイルに挿入して、同じ効果を実現することもできます。 **-N:** スイッチと \#pragma namespace コマンドの両方を使用すると、\#**pragma namespace** **autorecover** が優先されます。 この場合、MOF を別の名前空間にコンパイルする唯一の方法は、MOF ファイルを編集し、\#**pragma namespace** コマンドを変更することです。 リモート コンピューターは、\\\machinename\\root\\default を使用して指定できます。

-class:createonly

コンパイラが既存のクラスを変更しないよう要求します。 このスイッチを指定すると、MOF ファイルで指定されたクラスが既に存在する場合、コンパイル処理が終了します。

-class:forceupdate

競合する子クラスが存在する場合に、強制的にクラスを更新します。 たとえば、子クラスでクラス修飾子が定義されていて、基底クラスで同じ修飾子を追加しようとするとします。 -class:forceupdate モードでは、MOF コンパイラは子クラスの競合する修飾子を削除することで、この競合を解決します。 子クラスにインスタンスがある場合、強制更新は失敗します。

-class:safeupdate

子クラスが存在しても、変更によって子クラスで競合が発生しない限り、クラスの更新を許可します。 たとえば、このフラグを使用すると、それまでに子クラスでも言及されていない基底クラスに新しいプロパティを追加できます。 子クラスにインスタンスがある場合、更新は失敗します。

-class:updateonly

コンパイラが新しいクラスを作らないよう要求します。 このスイッチを指定すると、MOF ファイルで指定されたクラスが存在しない場合、コンパイル処理が終了します。

-instance:updateonly

コンパイラが新しいインスタンスを作らないよう要求します。 このスイッチを指定すると、MOF ファイルで指定されたインスタンスが存在しない場合、コンパイル処理が終了します。

-instance:createonly

コンパイラが既存のインスタンスを変更しないよう要求します。 このスイッチを指定すると、MOF ファイルで指定されたインスタンスが既に存在する場合、コンパイル処理が終了します。

-B:<filename>

WMI リポジトリに変更を加えることなく、filename に指定した名前でコンパイラがバイナリ バージョンの MOF ファイルを作ることを要求します。

-B:<filename> オプションを使用してバイナリ MOF ファイルを作成する場合、WMI リポジトリには既定の修飾子フレーバーのみが格納されます。

バイナリ MOF 形式は、WDM ドライバーと MOF をリソースとして組み合わせるための中間形式です。 バイナリ MOF は、テキスト MOF ファイルと同様にクラスとインスタンスを表し、ディスクに格納される前に圧縮されます。

-WMI

コンパイラが WMI 構文チェックを実行することを要求します。 -B: スイッチは、このスイッチと共に使用する必要があります。 -WMI スイッチは、WDM デバイス ドライバーで使用するバイナリ MOF ファイルのビルドにのみ使用されます。 このスイッチは、バイナリ MOF ファイルの作成後に実行される別のバイナリ MOF ファイル チェッカーを呼び出します。

-P:<Password>

ログオン時に入力するコンピューター ユーザーのパスワードとして Password を指定します。

-U:<UserName>

ログオンするユーザーの名前として UserName を指定します。

-A:<Authority>

WMI へのログオン時に使う機関 (ドメイン名) として Authority を指定します。

-MOF:<path>

言語に依存しない出力の名前です。 -AMENDMENT スイッチと共に使用して、生成される言語に依存しない MOF ファイルの名前を指定します。

-MFL:<path>

言語固有の出力の名前です。 -AMENDMENT スイッチと共に使用して、生成される言語固有の MOF ファイルの名前を指定します。

-AMENDMENT:<Locale>

MOF ファイルを、言語に依存しないバージョンと言語固有のバージョンに分割します。 MOF コンパイラでは、修正されたすべての修飾子が削除された MOF ファイルの言語に依存しない形式が作成されます。 MOF ファイルのローカライズされたバージョンも、MFL ファイル名拡張子で作成されます。 Locale パラメーターで、ローカライズされたクラス定義を含む子名前空間の名前が指定されます。 Locale パラメーターの形式は MS_xxx です。xxx は Windows LCID の 16 進数の値です。 たとえば、アメリカ英語のロケールは MS_409 です。

-ER <ResourceName>

指定したリソースからバイナリ MOF を抽出します。 このスイッチで WMI リポジトリの クラスからバイナリ MOF を取得します。一方、-B スイッチでは MOF ファイルからバイナリ MOF 形式が作成されます。

-L:<ResourceLocale>

省略可能。 -ER スイッチと組み合わせて使うと、MOF についてのローカライズされた説明テキストをバイナリ MOF から抽出します。

<MOFfile>

解析するファイルの名前。

戻り値

最初の操作として、MOF コンパイラでは MOF ファイルにチェック構文を実行します。 コンパイラでエラーが検出されると、エラー メッセージが出力され、プロセスが終了します。

MOF コンパイラでは、次の値を返すことができます。

0

MOF コンパイル操作が成功しました。

1

MOF コンパイラが WMI サーバーに接続できませんでした。 この原因は、既存の WMI レポジトリと互換性がないなどのセマンティック エラー、または WMI サーバーの起動に失敗したなどの実際のエラーです。

2

1 つ以上のコマンド ライン スイッチが無効でした。

3

MOF の構文エラーが発生しました。

MOF ファイルが正しく解析されていても、コマンド ライン スイッチによって禁止されている操作の実行が試行された場合、コンパイラからは、前の一覧に記載されているリターン コードではなく、WMI によって生成されたエラー コードが返されます。 たとえば、-instance:updateonly スイッチが指定され、MOF ファイルがインスタンスの作成が試みられると、WMI エラー コードが返されます。

#pragma autorecover プリプロセッサ ステートメントがファイルにない場合は、次の警告が返されます。

WARNING: FileYourMof.Mof does not contain #PRAGMA AUTORECOVER.
If the WMI repository is rebuilt in the future, the contents of this 
MOF file   will not be included in the new WMI repository.
To include this MOF file when the WMI Repository is automatically 
reconstructed, place the #PRAGMA AUTORECOVER statement on the first 
line of the MOF file.

解説

MOF コンパイラは、%Windir%\System32\wbem ディレクトリで使用できます。 MOF コンパイラのパラメーターとして MOF ファイルを指定する必要があります。 CIM リポジトリを自動的に回復する必要がある場合に MOF ファイルを自動的に再コンパイルする場合は、Autorecover スイッチを指定することもできます。 詳細については、コマンド プロンプトで「Mofcomp /?」と入力します。

Unicode 文字セットを使用する MOF ファイルには、ファイルの最初の 2 バイトとして署名が含まれています。 この署名は、ファイルのバイト順序に応じて、U+FFFE または U+FEFF のいずれかです。

解析プロセスでエラーが発生しない場合、-check スイッチが指定されていない限り、MOF コンパイラはローカル コンピューターで実行されている WMI サーバーに接続されます。 MOF ファイルで定義されているクラスとインスタンスが WMI リポジトリに追加されます。

WMI リポジトリの更新中にエラーが発生した場合、コンパイラでは、コンパイラの処理開始前にリポジトリを状態に戻そうとしません。

Windows 8: プロバイダーをインストールする場合、mofcomp では、実際の値に関係なく、[Key] と [Static] 修飾子が存在する場合は true として扱います。 その他の修飾子は、存在しても明示的に true に設定されていない場合は false として扱われます。

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008

関連項目

pragma namespace

MOF ファイルのコンパイル

ローカライズされた MOF ファイルのコンパイル

プロバイダーの登録

IMOFCompiler::CompileFile