我正在为支持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。