private void EventCallback(ref NativeMethods.EventTrace et) { string text = null; RuntimeHelpers.PrepareConstrainedRegions(); try { text = MofUtils.GetXml(et); if (!string.IsNullOrEmpty(text)) { processor(new TraceEntry(text)); } } catch (Exception e) { ExceptionManager.GeneralExceptionFilter(e); processor(new TraceEntry(null)); } }
private void SetupInternalTargetTraceRecordInSystemXmlElement(XmlElement element, InternalTargetTraceRecord trace) { if (element != null && trace != null) { switch (element.Name) { case "EventID": trace.eventID = element.InnerText; break; case "Provider": if (element.HasAttribute("Name")) { trace.sourceName = element.Attributes["Name"].Value; } if (element.HasAttribute("Guid")) { trace.guid = element.Attributes["Guid"].Value; } AppendXmlElementToStringBuilder(trace.sbUndefinedXmlInSystemXmlElement, element); break; case "Level": { byte result = 0; if (byte.TryParse(element.InnerText, out result)) { trace.level = MofUtils.ConvertByteToTraceEventType(result); } else { trace.level = (TraceEventType)0; } break; } case "TimeCreated": if (element.HasAttribute("SystemTime") && !string.IsNullOrEmpty(element.Attributes["SystemTime"].Value)) { try { trace.createdDateTime = DateTime.Parse(element.Attributes["SystemTime"].Value, CultureInfo.CurrentUICulture); } catch (FormatException) { trace.createdDateTime = DateTime.MinValue; } catch (ArgumentNullException) { trace.createdDateTime = DateTime.MinValue; } } break; case "Correlation": if (element.HasAttribute("ActivityID")) { trace.activityID = element.Attributes["ActivityID"].Value; if (element.HasAttribute("RelatedActivityID")) { trace.relatedActivityID = element.Attributes["RelatedActivityID"].Value; } } break; case "Execution": if (element.HasAttribute("ProcessID")) { trace.processID = element.Attributes["ProcessID"].Value; } if (element.HasAttribute("ThreadID")) { trace.threadID = element.Attributes["ThreadID"].Value; } break; case "Channel": trace.channel = element.InnerText; break; case "Computer": trace.computerName = element.InnerText; break; case "Security": if (element.HasAttribute("UserID")) { trace.userSid = element.Attributes["UserID"].Value; } break; case "Task": case "OpCode": case "Keywords": case "EventRecordID": AppendXmlElementToStringBuilder(trace.sbUndefinedXmlInSystemXmlElement, element); break; } } }