Udostępnij za pośrednictwem


Kompilator komunikatów (MC.exe)

Kompilator komunikatów (mc.exe) służy do kompilowania manifestów instrumentacji i plików tekstowych wiadomości. Kompilator generuje pliki zasobów komunikatów, do których łączy aplikacja.

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

Nuta

Kompilator komunikatów jest dostarczany z zestawem Windows SDK i można go znaleźć w folderze \Bin.

Argumenty wspólne dla plików tekstowych wiadomości i plików manifestu

-?

Wyświetla informacje o użyciu kompilatora komunikatów.

-c

Użyj tego argumentu, aby kompilator ustawił bit klienta (bit 28) we wszystkich identyfikatorach komunikatów. Aby uzyskać informacje na temat bitu klienta, zobacz winerror.h.

kodowanie -cp

Użyj tego argumentu, aby określić kodowanie znaków używane dla wszystkich wygenerowanych plików tekstowych. Prawidłowe nazwy to "ansi" (ustawienie domyślne), "utf-8" i "utf-16". Kodowanie Unicode spowoduje dodanie znacznika kolejności bajtów.

-erozszerzenia

Użyj tego argumentu, aby określić rozszerzenie do użycia dla pliku nagłówka. Można określić maksymalnie trzy znaki rozszerzenia, w tym kropkę. Wartość domyślna to .h.

-h ścieżki

Użyj tego argumentu, aby określić folder, w którym kompilator ma umieścić wygenerowany plik nagłówka. Wartość domyślna to bieżący katalog.

długości -m

Użyj tego argumentu, aby kompilator wygenerował ostrzeżenie, jeśli jakikolwiek komunikat przekracza długości znaków.

-rścieżka

Użyj tego argumentu, aby określić folder, w którym kompilator ma umieścić wygenerowany skrypt kompilatora zasobów (plik rc) i wygenerowane pliki .bin (zasoby binarne), które zawiera skrypt kompilatora zasobów. Wartość domyślna to bieżący katalog.

-z nazwa

Użyj tego argumentu, aby zastąpić domyślną nazwę bazową używaną przez kompilator dla generowanych plików. Wartością domyślną jest użycie podstawowej nazwy pliku pliku wejściowego.

nazwy pliku

Plik manifestu instrumentacji lub plik tekstowy wiadomości. Plik musi istnieć w bieżącym katalogu. Możesz określić plik manifestu, plik tekstowy wiadomości lub oba te elementy. Nazwa pliku musi zawierać rozszerzenie. Konwencja polega na użyciu rozszerzenia man dla plików manifestu i rozszerzenia .mc dla plików tekstowych wiadomości.

Argumenty specyficzne dla plików manifestu

ścieżki -s

Użyj tego argumentu, aby utworzyć punkt odniesienia instrumentacji. Określ ścieżkę do folderu zawierającego pliki manifestu punktu odniesienia. W przypadku kolejnych wersji użyjesz argumentu -t, aby sprawdzić nowy manifest względem punktu odniesienia pod kątem problemów ze zgodnością.

przed mc w wersji 1.12.7051: niedostępne

ścieżka -t

Użyj tego argumentu podczas tworzenia nowej wersji manifestu i chcesz sprawdzić zgodność aplikacji z punktem odniesienia utworzonym przy użyciu argumentu -s. Ścieżka musi wskazywać folder zawierający element . Pliki BIN utworzone przez operację punktu odniesienia (zobacz przełącznik -s).

przed mc w wersji 1.12.7051: niedostępne

-w ścieżce

Kompilator ignoruje ten argument i automatycznie weryfikuje manifest.

Przed mc w wersji 1.12.7051: Użyj tego argumentu, aby określić folder zawierający plik schematu Eventman.xsd, którego kompilator używa do sprawdzania poprawności manifestu. Zestaw Windows SDK zawiera plik schematu Eventman.xsd w folderze \Include. Jeśli ten argument nie zostanie określony, kompilator nie zweryfikuje manifestu.

ścieżka -W

Kompilator ignoruje ten argument.

przed mc w wersji 1.12.7051: Użyj tego argumentu, aby określić folder zawierający plik Winmeta.xml. Plik Winmeta.xml zawiera rozpoznane typy danych wejściowych i wyjściowych, a także wstępnie zdefiniowane kanały, poziomy i kody operacyjne. Zestaw Windows SDK zawiera plik Winmeta.xml w folderze \Include.

Argumenty specyficzne dla generowania kodu używanego przez dostawcę do rejestrowania zdarzeń

Następujące argumenty kompilatora umożliwiają generowanie kodu trybu jądra lub trybu użytkownika, którego można użyć do rejestrowania zdarzeń. Możesz również zażądać, aby kompilator wygenerował kod do obsługi zapisywania zdarzeń na komputerach przed systemem Windows Vista. Jeśli aplikacja jest napisana w języku C#, kompilator może wygenerować klasę języka C#, której można użyć do rejestrowania zdarzeń. Te argumenty są dostępne począwszy od wersji MC 1.12.7051 dostarczanej z systemem Windows 7 wersji zestawu Windows SDK.

-co

Użyj tego argumentu, aby usługa rejestrowania wywołała funkcję zdefiniowaną przez użytkownika dla każdego rejestrowanego zdarzenia (funkcja jest wywoływana po zarejestrowaniu zdarzenia). Funkcja zdefiniowana przez użytkownika musi mieć następujący podpis.

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

W kodzie należy również uwzględnić następującą dyrektywę.

#define MCGEN_CALLOUT pFnUserFunction

Aby zapobiec problemom z rejestrowaniem, należy zachować możliwie najkrótszą implementację; usługa nie będzie już rejestrować zdarzeń, dopóki funkcja nie zwróci.

Tego argumentu można użyć z argumentem -km lub -um.

-csprzestrzeni nazw

Użyj tego argumentu, aby kompilator wygenerował klasę języka C# na podstawie klasy .NET 3.5 EventProvider.

-cssprzestrzeni nazw

Użyj tego argumentu, aby kompilator wygenerował statyczną klasę języka C# na podstawie klasy EventProvider platformy .NET 3.5.

-km

Użyj tego argumentu, aby kompilator wygenerował kod trybu jądra, który będzie używany do rejestrowania zdarzeń zdefiniowanych w manifeście.

-mof

PRZESTARZAŁE. Użyj tego argumentu, aby kompilator wygenerował kod, którego można użyć do rejestrowania zdarzeń na komputerach przed systemem Windows Vista. Ta opcja tworzy również plik MOF zawierający klasy MOF dla każdego zdarzenia zdefiniowanego w manifeście. Aby zarejestrować klasy w pliku MOF, aby użytkownicy mogli dekodować zdarzenia, użyj kompilatora MOF (Mofcomp.exe). Aby uzyskać szczegółowe informacje na temat korzystania z kompilatora MOF, zobacz Managed Object Format.

Aby użyć tego przełącznika, należy przestrzegać następujących ograniczeń:

  • Każda definicja zdarzenia musi zawierać atrybuty zadania i kodu operacji
  • Każde zadanie musi zawierać atrybut eventGuid
  • Dane szablonu, których odwołanie do zdarzenia nie może zawierać:
    • Elementy danych określające typy danych wejściowych win:Binary lub win:SYSTEMTIME
    • Struktur
    • Tablice o zmiennym rozmiarze; można jednak określić tablice o stałej długości
    • Typy danych ciągów nie mogą określać atrybutu długości

Należy użyć tego argumentu z argumentem -um, -cs, -csslub -km

prefiks -p

Użyj tego argumentu, aby zastąpić domyślny prefiks używany przez kompilator do rejestrowania nazw makr i nazw metod. Domyślny prefiks to "EventWrite". W ciągu jest uwzględniana wielkość liter.

Tego argumentu można użyć z argumentem -um, -cs, -csslub -km.

-Pprefiks

Użyj tego argumentu, aby usunąć znaki z początku nazwy symbolicznej określonej dla zdarzenia. Porównanie jest bez uwzględniania wielkości liter. Kompilator używa nazwy symbolicznej do tworzenia nazw makr rejestrowania i nazw metod.

Domyślną nazwą makra rejestrowania jest EventWriteSymbolName, gdzie SymbolName to nazwa symboliczna określona dla zdarzenia. Jeśli na przykład ustawisz atrybut symbolu zdarzenia na PrinterConnection, nazwa makra to EventWritePrinterConnection. Aby usunąć drukarkę z nazwy, użyj -PPrinter, co powoduje zdarzenieWriteConnection.

Tego argumentu można użyć z argumentem -um, -cs, -csslub -km.

-um

Użyj tego argumentu, aby kompilator wygenerował kod trybu użytkownika, który będzie używany do rejestrowania zdarzeń zdefiniowanych w manifeście.

Aby kompilator wygenerował kod rejestrowania, należy określić -um, -cs, -csslub argument -km; argumenty te wykluczają się wzajemnie.

Aby określić, gdzie należy umieścić pliki h, .cs i mof generowane przez kompilator, użyj argumentu -h. Jeśli nie określisz argumentu -h, pliki zostaną umieszczone w bieżącym folderze.

Aby określić, gdzie należy umieścić plik RC i pliki binarne (zawierające zasoby metadanych), które generuje kompilator, użyj argumentu -r. Jeśli nie określisz argumentu -r, pliki zostaną umieszczone w bieżącym folderze.

Kompilator używa podstawowej nazwy pliku wejściowego jako podstawowej nazwy generowanych plików. Aby określić nazwę podstawową, użyj argumentu -z.

Argumenty specyficzne dla plików tekstowych wiadomości

-a

Użyj tego argumentu, aby określić, że nazwa pliku pliku wejściowego zawiera zawartość na stronie kodowej systemu Windows ANSI (CP_ACP). Jest to wartość domyślna. Użyj -u dla unicode. Jeśli plik wejściowy zawiera obiekt BOM, ten argument zostanie zignorowany.

-A

PRZESTARZAŁE. Użyj tego argumentu, aby określić, że komunikaty w pliku wyjściowym .bin powinny mieć wartość ANSI.

-b

Użyj tego argumentu, aby kompilator używał podstawowej nazwy pliku pliku wejściowego dla nazw plików .bin. Wartością domyślną jest użycie grupy "MSG".

-d

Użyj tego argumentu, aby użyć wartości dziesiętnych dla stałych Ważność i Obiekt w pliku nagłówka zamiast wartości szesnastkowe.

-n

Użyj tego argumentu, aby określić, że komunikaty kończą się natychmiast po treści komunikatu. Wartością domyślną jest zakończenie treści komunikatu za pomocą cr/LF.

-o

Użyj tego argumentu, aby kompilator wygenerował plik nagłówka OLE2 przy użyciu definicji HRESULT zamiast kodów stanu. Używanie kodów stanu jest ustawieniem domyślnym.

-u

Użyj tego argumentu, aby określić, że nazwa pliku pliku wejściowego zawiera zawartość UTF-16LE. Wartość domyślna to zawartość ANSI. Jeśli plik wejściowy zawiera obiekt BOM, ten argument zostanie zignorowany.

-U

Użyj tego argumentu, aby określić, że komunikaty w pliku wyjściowym .bin powinny mieć format Unicode. Jest to wartość domyślna.

-v

Użyj tego argumentu, aby wygenerować pełne dane wyjściowe.

-x ścieżka

Użyj tego argumentu, aby określić folder, do którego kompilator ma umieścić plik dołączania .dbg C. Plik dbg mapuje identyfikatory komunikatów na ich nazwy symboliczne.

Uwagi

Argumenty -A i -mof są przestarzałe i zostaną usunięte w przyszłości.

Kompilator akceptuje jako dane wejściowe plik manifestu (.man) lub plik tekstowy wiadomości (.mc) i generuje następujące pliki:

  • nazwa pliku.h

    Plik nagłówka C/C++, który zawiera deskryptory zdarzeń, identyfikator GUID dostawcy i nazwy symboli, do których odwołujesz się w aplikacji.

  • TEMP.bin nazwy pliku

    Plik zasobu binarnego, który zawiera dostawcę i metadane zdarzenia. Jest to zasób szablonu, który jest oznaczany sufiksem TEMP nazwy podstawowej pliku.

  • Msg00001.bin

    Plik zasobu binarnego dla każdego określonego języka (na przykład jeśli manifest zawiera ciągi komunikatów w en-US i fr-FR, kompilator wygenerowałby Msg00001.bin i Msg00002.bin).

  • nazwa pliku.rc

    Skrypt kompilatora zasobów zawierający instrukcje dołączania każdego pliku .bin jako zasobu.

W przypadku argumentów, które przyjmują ścieżkę, ścieżka może być ścieżką bezwzględną, względną lub UNC i może zawierać zmienne środowiskowe.

Przed mc w wersji 1.12.7051: Kompilator nie zezwala na ścieżki względne ani zmienne środowiskowe.

Przykłady

Poniższy przykład kompiluje manifest przy użyciu wartości domyślnych kompilatora.

mc spooler.man

Poniższy przykład kompiluje manifest i umieszcza pliki nagłówków i zasobów w określonych folderach.

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

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows 2000 Professional [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer Windows 2000 Server [tylko aplikacje klasyczne]