Bagikan melalui


Pengkompilasi Pesan (MC.exe)

Digunakan untuk mengkompilasi manifes instrumentasi dan file teks pesan. Pengkompilasi menghasilkan file sumber daya pesan yang ditautkan aplikasi Anda.

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>]

Argumen umum untuk file teks pesan dan file manifes

-?

Menampilkan informasi penggunaan untuk Pengkompilasi Pesan.

-C

Gunakan argumen ini agar pengkompilasi mengatur bit pelanggan (bit 28) di semua ID pesan. Untuk informasi tentang bit pelanggan, lihat winerror.h.

-cpencoding

Gunakan argumen ini untuk menentukan pengodean karakter yang digunakan untuk semua file teks yang dihasilkan. Nama yang valid termasuk "ansi" (default), "utf-8", dan "utf-16". Pengodean Unicode akan menambahkan tanda urutan byte.

Ekstensi -e

Gunakan argumen ini untuk menentukan ekstensi yang akan digunakan untuk file header. Anda dapat menentukan ekstensi hingga tiga karakter, tidak termasuk periode. Defaultnya adalah .h.

Jalur -h

Gunakan argumen ini untuk menentukan folder tempat Anda ingin pengkompilasi menempatkan file header yang dihasilkan. Defaultnya adalah direktori saat ini.

-mpanjang

Gunakan argumen ini agar pengkompilasi menghasilkan peringatan jika pesan melebihi karakter panjang .

Jalur -r

Gunakan argumen ini untuk menentukan folder tempat Anda ingin pengkompilasi menempatkan skrip pengkompilasi sumber daya yang dihasilkan (file.rc) dan file .bin yang dihasilkan (sumber daya biner) yang disertakan skrip pengkompilasi sumber daya. Defaultnya adalah direktori saat ini.

-zname

Gunakan argumen ini untuk mengambil alih nama dasar default yang digunakan pengkompilasi untuk file yang dihasilkannya. Defaultnya adalah menggunakan nama dasar file input nama file .

Filename

File manifes instrumentasi atau file teks pesan. File harus ada di direktori saat ini. Anda dapat menentukan file manifes, file teks pesan, atau keduanya. Nama file harus menyertakan ekstensi. Konvensinya adalah menggunakan ekstensi .man untuk file manifes dan ekstensi .mc untuk file teks pesan.

Argumen khusus untuk file manifes

Jalur -s

Gunakan argumen ini untuk membuat garis besar instrumentasi Anda. Tentukan jalur ke folder yang berisi file manifes garis besar Anda. Untuk rilis berikutnya, Anda kemudian akan menggunakan argumen -t untuk memeriksa manifes baru terhadap garis besar untuk masalah kompatibilitas.

Sebelum MC versi 1.12.7051: Tidak tersedia

Jalur -t

Gunakan argumen ini saat Anda membuat versi baru manifes Anda dan ingin memeriksanya untuk kompatibilitas aplikasi terhadap garis besar yang Anda buat menggunakan argumen -s . Jalur harus menunjuk ke folder yang berisi . File BIN yang dibuat operasi garis besar (lihat sakelar -s ).

Sebelum MC versi 1.12.7051: Tidak tersedia

-wpath

Pengkompilasi mengabaikan argumen ini dan secara otomatis memvalidasi manifes.

Sebelum MC versi 1.12.7051: Gunakan argumen ini untuk menentukan folder yang berisi file skema Eventman.xsd, yang digunakan pengkompilasi untuk memvalidasi manifes Anda. Windows SDK menyertakan file skema Eventman.xsd di folder \Include. Jika Anda tidak menentukan argumen ini, pengkompilasi tidak memvalidasi manifes Anda.

Jalur -W

Pengkompilasi mengabaikan argumen ini.

Sebelum MC versi 1.12.7051: Gunakan argumen ini untuk menentukan folder yang berisi file Winmeta.xml. File Winmeta.xml berisi jenis input dan output yang dikenali serta saluran, tingkat, dan opcode yang telah ditentukan sebelumnya. Windows SDK menyertakan file Winmeta.xml di folder \Include.

Argumen khusus untuk menghasilkan kode yang akan digunakan penyedia Anda untuk mencatat peristiwa

Anda dapat menggunakan argumen pengkompilasi berikut untuk menghasilkan kode mode kernel atau mode pengguna yang dapat Anda gunakan untuk mencatat peristiwa. Anda juga dapat meminta agar pengkompilasi menghasilkan kode untuk mendukung penulisan peristiwa di komputer sebelum Windows Vista. Jika aplikasi Anda ditulis C#, pengkompilasi dapat menghasilkan kelas C# yang dapat Anda gunakan untuk mencatat peristiwa. Argumen ini tersedia dimulai dengan MC versi 1.12.7051 yang dikirim dengan Windows 7 versi Window SDK.

-Co

Gunakan argumen ini agar layanan pengelogan memanggil fungsi yang ditentukan pengguna untuk setiap peristiwa yang Anda catat (fungsi dipanggil setelah peristiwa dicatat). Fungsi yang ditentukan pengguna Anda harus memiliki tanda tangan berikut.

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

Anda juga harus menyertakan direktif berikut dalam kode Anda.

#define MCGEN_CALLOUT pFnUserFunction

Anda harus menjaga implementasi Anda sesingkat mungkin untuk mencegah masalah pengelogan; layanan tidak akan mencatat lagi peristiwa Anda sampai fungsi kembali.

Anda dapat menggunakan argumen ini dengan argumen -km atau -um .

-csnamespace

Gunakan argumen ini agar pengkompilasi menghasilkan kelas C# berdasarkan kelas EventProvider .NET 3.5.

-cssnamespace

Gunakan argumen ini agar pengkompilasi menghasilkan kelas C# statis berdasarkan kelas EventProvider .NET 3.5.

-Km

Gunakan argumen ini agar pengkompilasi menghasilkan kode mode kernel yang akan Anda gunakan untuk mencatat peristiwa yang ditentukan dalam manifes Anda.

-Mof

TIDAK DIGUNAKAN LAGI. Gunakan argumen ini agar pengkompilasi menghasilkan kode yang dapat Anda gunakan untuk mencatat kejadian pada komputer sebelum Windows Vista. Opsi ini juga membuat file MOF yang berisi kelas MOF untuk setiap peristiwa yang ditentukan dalam manifes. Untuk mendaftarkan kelas dalam file MOF sehingga konsumen dapat mendekode peristiwa, gunakan pengkompilasi MOF (Mofcomp.exe). Untuk detail tentang menggunakan pengkompilasi MOF, lihat Format Objek Terkelola.

Untuk menggunakan sakelar ini, Anda harus mematuhi batasan berikut:

  • Setiap definisi peristiwa harus menyertakan atribut tugas dan opcode
  • Setiap tugas harus menyertakan atribut eventGuid
  • Data templat yang tidak boleh dimuat referensi peristiwa:
    • Item data yang menentukan jenis input win:Binary atau win:SYSTEMTIME
    • Struktur
    • Array berukuran variabel; namun, Anda dapat menentukan array panjang tetap
    • Jenis data string tidak dapat menentukan atribut panjang

Anda harus menggunakan argumen ini dengan argumen -um, -cs, -css, atau -km

-pawalan

Gunakan argumen ini untuk mengambil alih awalan default yang digunakan pengkompilasi untuk nama makro pengelogan dan nama metode. Awalan defaultnya adalah "EventWrite". String peka huruf besar/kecil.

Anda dapat menggunakan argumen ini dengan argumen -um, -cs, -css, atau -km .

Awalan -P

Gunakan argumen ini untuk menghapus karakter dari awal nama simbolis yang Anda tentukan untuk peristiwa tersebut. Perbandingannya adalah tidak peka huruf besar/kecil. Pengkompilasi menggunakan nama simbolis untuk membentuk nama makro pengelogan dan nama metode.

Nama default untuk makro pengelogan adalahEventWrite SymbolName, di mana SymbolName adalah nama simbolis yang Anda tentukan untuk peristiwa tersebut. Misalnya, jika Anda mengatur atribut simbol peristiwa ke PrinterConnection, nama makronya adalah EventWritePrinterConnection. Untuk menghapus Printer dari namanya, gunakan -PPrinter, yang menghasilkan EventWriteConnection.

Anda dapat menggunakan argumen ini dengan argumen -um, -cs, -css, atau -km .

-Umm

Gunakan argumen ini agar pengkompilasi menghasilkan kode mode pengguna yang akan Anda gunakan untuk mencatat peristiwa yang ditentukan dalam manifes Anda.

Agar pengkompilasi menghasilkan kode pengelogan, Anda harus menentukan argumen -um, -cs, -css, atau -km ; argumen ini saling eksklusif.

Untuk menentukan di mana menempatkan file .h, .cs, dan .mof yang dihasilkan kompilator, gunakan argumen -h . Jika Anda tidak menentukan argumen -h , file ditempatkan di folder saat ini.

Untuk menentukan tempat menempatkan file .rc dan file biner (yang berisi sumber daya metadata) yang dihasilkan pengkompilasi, gunakan argumen -r . Jika Anda tidak menentukan argumen -r , file ditempatkan di folder saat ini.

Pengkompilasi menggunakan nama dasar file input sebagai nama dasar file yang dihasilkannya. Untuk menentukan nama dasar, gunakan argumen -z .

Argumen khusus untuk file teks pesan

-J

Gunakan argumen ini untuk menentukan bahwa file input nama file berisi konten di halaman kode Windows ANSI default sistem (CP_ACP). Ini adalah default. Gunakan -u untuk Unicode. Jika file input berisi BOM, argumen ini akan diabaikan.

-J

TIDAK DIGUNAKAN LAGI. Gunakan argumen ini untuk menentukan bahwa pesan dalam file .bin output harus ANSI.

-B

Gunakan argumen ini agar pengkompilasi menggunakan nama dasar file input nama file untuk nama file .bin. Defaultnya adalah menggunakan "MSG".

-D

Gunakan argumen ini untuk menggunakan nilai desimal untuk konstanta Tingkat Keparahan dan Fasilitas dalam file header alih-alih nilai heksadesimal.

-N

Gunakan argumen ini untuk menentukan bahwa pesan dihentikan segera setelah isi pesan. Defaultnya adalah mengakhiri isi pesan dengan CR/LF.

-O

Gunakan argumen ini agar pengkompilasi menghasilkan file header OLE2 menggunakan definisi HRESULT alih-alih kode status. Menggunakan kode status adalah default.

-U

Gunakan argumen ini untuk menentukan bahwa file input nama file berisi konten UTF-16LE. Defaultnya adalah konten ANSI. Jika file input berisi BOM, argumen ini akan diabaikan.

-U

Gunakan argumen ini untuk menentukan bahwa pesan dalam file .bin output harus Unicode. Ini adalah default.

-V

Gunakan argumen ini untuk menghasilkan output verbose.

Jalur -x

Gunakan argumen ini untuk menentukan folder tempat Anda ingin pengkompilasi menempatkan file .dbg C include. File .dbg memetakan ID pesan ke nama simbolisnya.

Keterangan

Argumen -A dan -mof tidak digunakan lagi dan akan dihapus di masa mendatang.

Pengkompilasi menerima sebagai input file manifes (.man) atau file teks pesan (.mc) dan menghasilkan file berikut:

  • filename.h

    File header C/C++ yang berisi deskriptor peristiwa, GUID penyedia, dan nama simbol yang Anda referensikan di aplikasi Anda.

  • Filename TEMP.bin

    File sumber daya biner yang berisi penyedia dan metadata peristiwa. Ini adalah sumber daya templat, yang ditandatangani oleh akhiran TEMP dari nama dasar file.

  • Msg00001.bin

    File sumber daya biner untuk setiap bahasa yang Anda tentukan (misalnya, jika manifes Anda berisi string pesan dalam en-US dan fr-FR, pengkompilasi akan menghasilkan Msg00001.bin dan Msg00002.bin).

  • filename.rc

    Skrip pengkompilasi sumber daya yang berisi pernyataan untuk menyertakan setiap file .bin sebagai sumber daya.

Untuk argumen yang mengambil jalur, jalur dapat menjadi jalur absolut, relatif, atau UNC dan dapat berisi variabel lingkungan.

Sebelum MC versi 1.12.7051: Pengkompilasi tidak mengizinkan jalur relatif atau variabel lingkungan.

Windows SDK menyertakan pengkompilasi (mc.exe) di folder \Bin.

Contoh

Contoh berikut mengkompilasi manifes menggunakan default pengkompilasi.

mc spooler.man

Contoh berikut mengkompilasi manifes dan menempatkan file header dan sumber daya di folder yang ditentukan.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]