次の方法で共有


メッセージ コンパイラ (MC.exe)

メッセージ コンパイラ (mc.exe) は、インストルメンテーション マニフェストとメッセージ テキスト ファイルをコンパイルするために使用されます。 コンパイラは、アプリケーションがリンクするメッセージ リソース ファイルを生成します。

MC [-?aAbcdnouUv] [-m <length>] [-h <path>] [-e <extension>] [-r <path>]
   [-x <path>] [-w <file>] [-W <file>] [-z <basename> ] [-cp <encoding>]
   [-km | -um | -generateProjections | -cs <namespace>]
   [-mof] [-p <prefix>] [-P <prefix>]
   [<filename.man>] [<filename.mc>]

手記

メッセージ コンパイラは Windows SDK に付属しており、\Bin フォルダーにあります。

メッセージ テキスト ファイルとマニフェスト ファイルの両方に共通する引数

-?

メッセージ コンパイラの使用状況情報を表示します。

-c

コンパイラがすべてのメッセージ ID で顧客ビット (ビット 28) を設定するには、この引数を使用します。 顧客ビットの詳細については、winerror.h を参照してください。

-cpエンコード

生成されたすべてのテキスト ファイルに使用される文字エンコーディングを指定するには、この引数を使用します。 有効な名前には、"ansi" (既定)、"utf-8"、および "utf-16" が含まれます。 Unicode エンコードでは、バイト順マークが追加されます。

-e拡張機能の

ヘッダー ファイルに使用する拡張子を指定するには、この引数を使用します。 ピリオドを含めず、最大 3 文字の拡張子を指定できます。 既定値は .h です。

-hパス

この引数を使用して、生成されたヘッダー ファイルをコンパイラに配置するフォルダーを指定します。 既定値は現在のディレクトリです。

-mlength

この引数を使用して、メッセージの長さが 文字 超えた場合に、コンパイラに警告を生成させます。

-rパスする

この引数を使用して、生成されたリソース コンパイラ スクリプト (.rc ファイル) と、生成された.bin ファイル (バイナリ リソース) をコンパイラに配置するフォルダーを指定します。 既定値は現在のディレクトリです。

-z

コンパイラが生成するファイルに使用する既定のベース名をオーバーライドするには、この引数を使用します。 既定では、ファイル名の基本名 入力ファイルを使用します。

ファイル名の

インストルメンテーション マニフェスト ファイルまたはメッセージ テキスト ファイル。 ファイルは現在のディレクトリに存在する必要があります。 マニフェスト ファイル、メッセージ テキスト ファイル、またはその両方を指定できます。 ファイル名には拡張子を含める必要があります。 規則は、マニフェスト ファイルに .man 拡張子を使用し、メッセージ テキスト ファイルに .mc 拡張子を使用することです。

マニフェスト ファイルに固有の引数

-sパス

インストルメンテーションのベースラインを作成するには、この引数を使用します。 ベースライン マニフェスト ファイルを含むフォルダーへのパスを指定します。 その後のリリースでは、-t 引数を使用して、互換性の問題のベースラインに対して新しいマニフェストを確認します。

MC バージョン 1.12.7051 より前の : 利用できません

-tパス

この引数は、マニフェストの新しいバージョンを作成し、-s 引数を使用して作成したベースラインとのアプリケーションの互換性を確認する場合に使用します。 パスは、.. を含むフォルダーを指す必要があります。ベースライン操作によって作成された BIN ファイル (-s スイッチを参照)。

MC バージョン 1.12.7051 より前の : 利用できません

-wパス

コンパイラはこの引数を無視し、マニフェストを自動的に検証します。

MC バージョン 1.12.7051 より前のバージョン: この引数を使用して、マニフェストの検証に使用する Eventman.xsd スキーマ ファイルを含むフォルダーを指定します。 Windows SDK には、\Include フォルダーに Eventman.xsd スキーマ ファイルが含まれています。 この引数を指定しない場合、コンパイラはマニフェストを検証しません。

-Wパス

コンパイラはこの引数を無視します。

MC バージョン 1.12.7051 より前のバージョン: この引数を使用して、Winmeta.xml ファイルを含むフォルダーを指定します。 Winmeta.xml ファイルには、認識された入力と出力の種類と、定義済みのチャネル、レベル、およびオペコードが含まれています。 Windows SDK には、\Include フォルダーに Winmeta.xml ファイルが含まれています。

イベントのログ記録にプロバイダーが使用するコードの生成に固有の引数

次のコンパイラ引数を使用して、イベントのログ記録に使用できるカーネル モードまたはユーザー モードのコードを生成できます。 また、Windows Vista より前のコンピューターでのイベントの書き込みをサポートするコードをコンパイラで生成するように要求することもできます。 アプリケーションが C# で記述されている場合、コンパイラはイベントのログ記録に使用できる C# クラスを生成できます。 これらの引数は、Windows 7 バージョンの Window SDK に付属する MC バージョン 1.12.7051 以降で使用できます。

-co

この引数を使用して、ログ記録サービスで、ログに記録するイベントごとにユーザー定義関数を呼び出します (関数はイベントがログに記録された後に呼び出されます)。 ユーザー定義関数には、次のシグネチャが必要です。

VOID
pFnUserFunction(
    __in REGHANDLE RegHandle,
    __in PCEVENT_DESCRIPTOR Descriptor,
    __in ULONG EventDataCount,
    __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData
    );

また、コードに次のディレクティブを含める必要があります。

#define MCGEN_CALLOUT pFnUserFunction

ログ記録の問題を防ぐために、実装はできるだけ短くする必要があります。関数が戻るまで、サービスはイベントのログを記録しなくなります。

この引数は、-km または -um 引数 使用できます。

-cs名前空間の

この引数を使用して、.NET 3.5 EventProvider クラスに基づいて C# クラスをコンパイラに生成させます。

-css名前空間の

この引数を使用して、.NET 3.5 EventProvider クラスに基づいて静的 C# クラスをコンパイラに生成させます。

-km

この引数を使用して、マニフェストで定義されているイベントをログに記録するために使用するカーネル モード コードをコンパイラに生成させます。

-mof

廃止。 この引数を使用して、Windows Vista より前のコンピューターでイベントをログに記録するために使用できるコードをコンパイラに生成させます。 このオプションでは、マニフェストで定義されている各イベントの MOF クラスを含む MOF ファイルも作成されます。 コンシューマーがイベントをデコードできるように MOF ファイルにクラスを登録するには、MOF コンパイラ (Mofcomp.exe) を使用します。 MOF コンパイラの使用方法の詳細については、「マネージド オブジェクト形式の参照してください。

このスイッチを使用するには、次の制限に従う必要があります。

  • すべてのイベント定義にタスク属性とオペコード属性を含める必要があります
  • すべてのタスクに eventGuid 属性を含める必要があります
  • イベントが参照するテンプレート データに含めることはできません。
    • win:Binary または win:SYSTEMTIME 入力の種類を指定するデータ項目
    • 構造
    • 可変サイズの配列。ただし、固定長配列は指定できます
    • 文字列データ型で長さ属性を指定できない

この引数は、-um-cs-css、または -km 引数 使用する必要があります。

-pプレフィックス

この引数を使用して、コンパイラがログ記録マクロ名とメソッド名に使用する既定のプレフィックスをオーバーライドします。 既定のプレフィックスは "EventWrite" です。 文字列では大文字と小文字が区別されます。

この引数は、-um-cs-css、または -km 引数 使用できます。

-Pプレフィックス

イベントに指定したシンボリック名の先頭から文字を削除するには、この引数を使用します。 比較では大文字と小文字が区別されません。 コンパイラはシンボリック名を使用して、ログ記録マクロ名とメソッド名を形成します。

ログ 記録マクロの既定の名前は EventWriteSymbolNameです。SymbolName は、イベントに指定したシンボリック名です。 たとえば、イベントのシンボル属性を PrinterConnection に設定すると、マクロ名は EventWritePrinterConnection になります。 名前から Printer を削除するには、-PPrinterを使用します。その結果、EventWriteConnection になります。

この引数は、-um-cs-css、または -km 引数 使用できます。

-um

マニフェストで定義されているイベントをログに記録するために使用するユーザー モード コードをコンパイラで生成するには、この引数を使用します。

コンパイラでログ コードを生成するには、-um-cs-css、または -km 引数を指定する必要があります。これらの引数は相互に排他的です。

コンパイラによって生成される .h、.cs、および .mof ファイルを配置する場所を指定するには、-h 引数を使用します。 -h 引数を指定しない場合、ファイルは現在のフォルダーに配置されます。

コンパイラによって生成される .rc ファイルとバイナリ ファイル (メタデータ リソースを含む) を配置する場所を指定するには、-r 引数を使用します。 -r 引数を指定しない場合、ファイルは現在のフォルダーに配置されます。

コンパイラは、入力ファイルの基本名を生成するファイルのベース名として使用します。 ベース名を指定するには、-z 引数を使用します。

メッセージ テキスト ファイルに固有の引数

-a

この引数を使用して、入力ファイル ファイル名に、システムの既定の Windows ANSI コード ページ (CP_ACP) のコンテンツが含まれていることを指定します。 これが既定値です。 Unicode -u を使用します。 入力ファイルに BOM が含まれている場合、この引数は無視されます。

-A

廃止。 この引数を使用して、出力.binファイル内のメッセージを ANSI にすることを指定します。

-b

この引数を使用して、コンパイラで.binファイル名の入力ファイル ファイル名の基本名を使用します。 既定値は "MSG" を使用します。

-d

この引数を使用して、ヘッダー ファイルの重大度定数と Facility 定数に 16 進値ではなく 10 進値を使用します。

-n

メッセージ本文の直後にメッセージを終了するように指定するには、この引数を使用します。 既定では、CR/LF でメッセージ本文を終了します。

-o

状態コードの代わりに HRESULT 定義 使用して OLE2 ヘッダー ファイルを生成するには、この引数を使用します。 状態コードの使用が既定です。

-u

この引数を使用して、ファイル名 入力ファイルに UTF-16LE コンテンツが含まれていることを指定します。 既定値は ANSI コンテンツです。 入力ファイルに BOM が含まれている場合、この引数は無視されます。

-U

この引数を使用して、出力.binファイル内のメッセージを Unicode にすることを指定します。 これが既定値です。

-v

詳細出力を生成するには、この引数を使用します。

-xパスする

この引数を使用して、コンパイラで .dbg C インクルード ファイルを配置するフォルダーを指定します。 .dbg ファイルは、メッセージ ID をシンボリック名にマップします。

備考

-A 引数と -mof 引数は非推奨となり、今後削除される予定です。

コンパイラは、マニフェスト (.man) ファイルまたはメッセージ テキスト (.mc) ファイルを入力として受け入れ、次のファイルを生成します。

  • h ファイル名

    アプリケーションで参照するイベント記述子、プロバイダー GUID、シンボル名を含む C/C++ ヘッダー ファイル。

  • ファイル名のTEMP.bin

    プロバイダーとイベントのメタデータを含むバイナリ リソース ファイル。 これはテンプレート リソースです。これは、ファイルのベース名の TEMP サフィックスによって示されます。

  • Msg00001.bin

    指定した各言語のバイナリ リソース ファイル (たとえば、マニフェストに en-US および fr-FRにメッセージ文字列が含まれている場合、コンパイラはMsg00001.binとMsg00002.binを生成します)。

  • ファイル名.rc

    各.bin ファイルをリソースとして含めるステートメントを含むリソース コンパイラ スクリプト。

パスを受け取る引数の場合、パスには絶対パス、相対パス、または UNC パスを指定でき、環境変数を含めることができます。

MC バージョン 1.12.7051 より前: コンパイラは相対パスまたは環境変数を許可しません。

次の例では、コンパイラの既定値を使用してマニフェストをコンパイルします。

mc spooler.man

次の例では、マニフェストをコンパイルし、指定したフォルダーにヘッダー ファイルとリソース ファイルを配置します。

mc -h <pathgoeshere> -r <pathgoeshere> spooler.man

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小サーバー Windows 2000 Server [デスクトップ アプリのみ]