Windows事件日志:事件模板 - 输出类型:win:Xml

时间:2012-10-06 08:09:13

标签: winapi

我正在为支持Vista及更高版本的应用程序制作Windows事件日志。我为每个事件创建了一个清单,但是我遇到了输出类型win:Xml的问题。 以下是我为事件模板中的数据指定的内容。

<data name="StackTrace" inType="win:UnicodeString" outType="win:Xml">
</data>

我想将StackTrace设置为在事件日志中以XML格式显示。必须使用格式良好的XML输入StackTrace。但是,我仍然在事件日志查看器中看到它显示为字符串(xs:string)。

你知道我做错了什么吗?我怎样才能正确使用它?

如果我的代码更新了以下内容:

const int NUM_OF_DATADESC = 6;
EVENT_DATA_DESCRIPTOR eventDataDesc[NUM_OF_DATADESC];
evDesc.Level = uLevel;
evDesc.Channel = nChannel;
evDesc.Keyword |= uKeyword;
for (int i = 0; i < NUM_OF_DATADESC; i++)
{
if (strings[i] != NULL)
    EventDataDescCreate(&eventDataDesc[i], strings[i],    ((ULONG)wcslen(strings[i])+1)*sizeof(WCHAR));
else
    EventDataDescCreate(&eventDataDesc[i], L"", sizeof(WCHAR));
}
BOOL s = WriteEvent(evDesc,NUM_OF_DATADESC,&eventDataDesc[0]);


BOOL WriteEvent(EVENT_DESCRIPTOR eventID,DWORD userDataCount,PEVENT_DATA_DESCRIPTOR     userData)
{
REGHANDLE hPub = NULL;
ULONG res = EventRegister(&MYCOMPANE_MYAPP_MYCOMPONENT, NULL, NULL, &hPub);    
if (ERROR_SUCCESS != res){
    return FALSE;
}

res = EventWrite(hPub, &eventID, userDataCount, userData);
if (ERROR_SUCCESS != res){
 return FALSE;
}
EventUnregister(hPub);

return TRUE;
}

代码工作正常,但只发出输出类型= win:Xml。

0 个答案:

没有答案