メッセージ コンパイラ (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>]

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

-?

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

-C

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

-cpエンコード

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

-e拡張機能

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

-hpath

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

-mlength

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

-rpath

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

-zname

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

filename

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

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

-spath

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

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

-tpath

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

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

-wpath

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

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 以降で使用できます。

-共同

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

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 入力の種類を指定するデータ項目
    • 構造体
    • 可変サイズの配列。ただし、固定長配列を指定できます
    • 文字列データ型で length 属性を指定できない

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

-pプレフィックス

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

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

-Pプレフィックス

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

ログ 記録マクロの既定の名前は EventWriteSymbolName です。 SymbolName はイベントに指定したシンボリック名です。 たとえば、イベントの symbol 属性を 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

ヘッダー ファイル内の Severity 定数と 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) ファイルを入力として受け取り、次のファイルを生成します。

  • filename.h

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

  • FilenameTEMP.bin

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

  • Msg00001.bin

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

  • filename.rc

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

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

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

Windows SDK には、\Bin フォルダーにコンパイラ (mc.exe) が含まれています。

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

mc spooler.man

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

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

必要条件

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