共用方式為


訊息編譯程式 (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

使用此自變數讓編譯程式在所有訊息標識碼中設定客戶位 (位28)。 如需客戶位的相關信息,請參閱 winerror.h。

-cp編碼

使用此自變數來指定用於所有產生的文字檔的字元編碼。 有效名稱包括 「ansi」 (預設值)、“utf-8”和 “utf-16”。 Unicode 編碼會新增位元組順序標記。

-e擴充功能

使用此自變數可指定要用於頭檔的擴展名。 您可以指定最多三個字元的擴展名,不包括句點。 預設值為 .h。

-h路徑

使用此自變數指定您要編譯程式放置所產生頭文件的資料夾。 預設值為目前目錄。

-m長度

如果任何訊息超過 長度 個字元,請使用這個自變數來產生警告。

-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 檔案包含已辨識的輸入和輸出類型,以及預先定義的通道、層級和 opcode。 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 編譯程式的詳細資訊,請參閱 Managed 物件格式

若要使用此參數,您必須遵守下列限制:

  • 每個事件定義都必須包含工作和opcode屬性
  • 每個工作都必須包含 eventGuid 屬性
  • 事件參考不能包含的範本資料:
    • 指定 win:Binary 或 win:SYSTEMTIME 輸入類型的數據項
    • 結構
    • 可變大小的陣列;不過,您可以指定固定長度陣列
    • 字串數據類型無法指定 length 屬性

您必須將此自變數與 -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

使用此自變數來使用頭檔中嚴重性和設備常數的十進位值,而不是十六進位值。

-n

使用此自變數可指定訊息在訊息本文之後立即終止。 預設值是使用CR/LF終止訊息本文。

-o

使用此自變數,讓編譯程式使用 HRESULT 定義來產生 OLE2 頭檔,而不是狀態代碼。 使用狀態代碼是預設值。

-u

使用此自變數來指定輸入檔 檔名 包含 UTF-16LE 內容。 預設值為 ANSI 內容。 如果輸入檔包含 BOM,則會忽略此自變數。

-U

使用此自變數來指定輸出.bin檔案中的訊息應該是 Unicode。 這是預設值。

-v

使用此自變數來產生詳細信息輸出。

-x路徑

使用此自變數指定您要編譯程式放置 .dbg C include 檔案的資料夾。 .dbg 檔案會將訊息標識碼對應至其符號名稱。

言論

-A-mof 自變數已被取代,未來將會移除。

編譯程式接受輸入指令清單 (.man) 檔案或消息正文 (.mc) 檔案,併產生下列檔案:

  • 檔名.h

    C/C++頭檔,其中包含您在應用程式中參考的事件描述元、提供者 GUID 和符號名稱。

  • 檔名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 [僅限傳統型應用程式]