最后,还需要把应用程序实际将引发的事件添加到清单文件中,为简单起见,对每个通道只定义了一个事件,且都使用同一个模板:
<event value="1"现在,消息编译器(mc.exe)就可以把这个清单文件编译为头文件及资源文件了。
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)"/>
引发事件
实际上,在程序中引发事件是相当地简单(至少与定义清单文件相比是这样的),正如前面所提到的,消息编译器生成了包含有事件及事件发布者定义的头文件,这些信息都可传递给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