2011-07-04 13 views
8

Mam wymóg modyfikacji prostej usługi Windows napisanej w win32 C (nie C++).Czy istnieje sposób zapisu w dzienniku zdarzeń systemu Windows w C?

Czy istnieje biblioteka, której można użyć do zapisywania wpisów dziennika zdarzeń w dzienniku zdarzeń systemu Windows bez użycia zdarzenia eventcreate.exe? Czy muszę go zmodyfikować, aby został skompilowany jako program C++?

+0

Robiąc to programowo, możesz zacząć od [tutaj] (http://msdn.microsoft.com/en-us/library/dd996928 (v = vs.85) .aspx). – Jon

Odpowiedz

14

Tak, zobacz funkcję ReportEvent i jej example.

Plik źródłowy dostawca wydarzenie z rozszerzeniem .mc wygląda następująco:

; // MyEventProvider.mc 
; // This is the header section. 
    SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS 
       Informational=0x1:STATUS_SEVERITY_INFORMATIONAL 
       Warning=0x2:STATUS_SEVERITY_WARNING 
       Error=0x3:STATUS_SEVERITY_ERROR 
      ) 
    FacilityNames=(System=0x0:FACILITY_SYSTEM 
       Runtime=0x2:FACILITY_RUNTIME 
       Stubs=0x3:FACILITY_STUBS 
       Io=0x4:FACILITY_IO_ERROR_CODE 
      ) 
    LanguageNames=(English=0x409:MSG00409) 
; // The following are the categories of events. 
    MessageIdTypedef=WORD 
    MessageId=0x1 
    SymbolicName=NETWORK_CATEGORY 
    Language=English 
    Network Events 
    ... rest of file omitted 

plik .mc jest kompilowany do pliku .res która jest związana w .dll:

skompilować komunikat plik tekstowy, należy użyć następującego polecenia:

mc -U provider.mc 

skompilować zasobów, które kompilator generowane wiadomość, należy użyć następującego polecenia:

rc provider.rc 

Aby utworzyć DLL zasobów, który zawiera tylko zasoby ciąg tabeli wiadomość, należy użyć następującego polecenia (można uruchomić polecenie z Visual Studio wiersza poleceń):

link -dll -noentry provider.res 

...

Powiązane problemy