技术开发 频道

在VC++程序中自定义Vista事件日志


    最后,还需要把应用程序实际将引发的事件添加到清单文件中,为简单起见,对每个通道只定义了一个事件,且都使用同一个模板:

<event value="1"
level="win:Informational"
template="SimpleEvent"
opcode="win:Info"
channel="MyOpChannel"
symbol=" DNP_OP_EVENT"
message="$(string.SimpleMessage)"/>
<event value="2"
level="win:Informational"
template="SimpleEvent"
opcode="win:Info"
channel="MyDebugChannel"
symbol=" DNP_DEBUG_EVENT"
message="$(string.SimpleMessage)"/>
   现在,消息编译器(mc.exe)就可以把这个清单文件编译为头文件及资源文件了。


引发事件

    实际上,在程序中引发事件是相当地简单(至少与定义清单文件相比是这样的),正如前面所提到的,消息编译器生成了包含有事件及事件发布者定义的头文件,这些信息都可传递给SDK函数,对上面的清单文件而言,头文件将会包含以下定义:

EXTERN_C __declspec(selectany) const 
GUID DOTNETPERFORMANCE_TECHNICALWRITING_PUBLISHER = {
0x9cde86c9, 0xdfb9, 0x463f, {0xb2, 0xc5,0x71,0xee,0xc2,0x32,
0xa6,0x9c}};

#define DOTNETPERFORMANCEOP 0x10

#define DOTNETPERFORMANCEDEBUG 0x0

EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR OP_EVENT = {
0x1, 0x0, 0x10, 0x4, 0x0, 0x0, 0x8000000000000000};

#define DNP_OP_EVENT_value 0x1

EXTERN_C __declspec(selectany) const EVENT_DESCRIPTOR DEBUG_EVENT =
{0x2, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4000000000000000};

#define DNP_DEBUG_EVENT_value 0x2

#define MSG_SimpleMessage 0xB0000001L

0
相关文章