8
我有一個需要修改在win32 C(不是C++)中編寫的簡單的Windows服務。有沒有辦法寫入C中的Windows事件日誌?
是否有一個庫,我可以用它來寫事件日誌條目到Windows事件日誌,而無需使用eventcreate.exe?或者我必須修改它作爲C++程序編譯?
我有一個需要修改在win32 C(不是C++)中編寫的簡單的Windows服務。有沒有辦法寫入C中的Windows事件日誌?
是否有一個庫,我可以用它來寫事件日誌條目到Windows事件日誌,而無需使用eventcreate.exe?或者我必須修改它作爲C++程序編譯?
是的,請參見功能ReportEvent及其example。
用的.mc擴展事件提供源文件是這樣的:
; // 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
的.mc文件被編譯成鏈接到一個.dll一個res文件:
要編譯消息文本文件中,使用下面的命令:
mc -U provider.mc
要編譯生成的消息編譯器的資源,使用下面的命令:
rc provider.rc
創建包含消息表字符串資源的唯一資源DLL,請使用以下命令(你可以運行從Visual Studio命令提示符的命令):
link -dll -noentry provider.res
...
爲了以編程方式執行此操作,您可能需要從[here](http://msdn.microsoft.com/zh-cn/library/dd996928(v = vs.85).aspx)開始。 – Jon