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));
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }