Vista以降をサポートするアプリケーションのWindowsイベントログを作成しています。イベントごとにマニフェストを作成しましたが、出力タイプwin:Xmlで問題が発生します。以下は、イベントテンプレートのデータに指定するものです。
<data name="StackTrace" inType="win:UnicodeString" outType="win:Xml">
</data>
StackTraceをイベントログにXML形式で表示するように設定したいと思います。StackTraceは、整形式のXMLで入力する必要があります。ただし、イベントログビューアにstring(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でのみ問題が発生します。