private Resolver ParseClassicProvider(XElement provider) { string providerName = MakeIdentifier(provider.Attribute(AttributeNames.Name).Value); string providerGuid = provider.Attribute(AttributeNames.Guid).Value; XElement templates = provider.Element(ElementNames.Templates); GetEarliestVersions(provider); var nameFunction = FindNameFunction(provider); XElement events = provider.Element(ElementNames.Events); XElement tasks = provider.Element(ElementNames.Tasks); IEnumerable <XElement> opcodes = provider.Descendants(ElementNames.Opcodes); XElement messages = this._stringTable; Resolver resolver = new CrimsonSymbolResolver(); resolver.ProviderName = providerName; resolver.ProviderId = Guid.Parse(providerGuid); resolver = this.CreateResolver( false, providerName, providerGuid, events, null, //MOF doesn't have keywords. tasks, opcodes, messages); return(resolver); }
private Resolver ParseClassicProvider(XElement provider) { string providerName = MakeIdentifier(provider.Attribute(AttributeNames.Name).Value); string providerGuid = provider.Attribute(AttributeNames.Guid).Value; XElement templates = provider.Element(ElementNames.Templates); GetEarliestVersions(provider); var nameFunction = FindNameFunction(provider); XElement events = provider.Element(ElementNames.Events); XElement tasks = provider.Element(ElementNames.Tasks); IEnumerable<XElement> opcodes = provider.Descendants(ElementNames.Opcodes); XElement messages = this._stringTable; Resolver resolver = new CrimsonSymbolResolver(); resolver.ProviderName = providerName; resolver.ProviderId = Guid.Parse(providerGuid); resolver = this.CreateResolver( false, providerName, providerGuid, events, null, //MOF doesn't have keywords. tasks, opcodes, messages); return resolver; }
private Resolver CreateResolver(bool crimson, string providerName, string providerGuid, XElement events, XElement keywords, XElement tasks, IEnumerable <XElement> opcodes, XElement messages) { Resolver resolver; resolver = new CrimsonSymbolResolver(); resolver.ProviderName = providerName; resolver.ProviderId = Guid.Parse(providerGuid); if (messages != null) { var m = from t in messages.Elements() select new MessagDefinition { Id = (string)t.Attribute(AttributeNames.Id), Message = t.Attribute(AttributeNames.Value).Value }; resolver.Messages = m.ToList(); } resolver.Symbols = this.GetEventsFromCompiledManifests(resolver.ProviderId); Func <XElement, string> findMessage = (t) => { string msg = null; string message = t.Attribute(AttributeNames.Message) != null?t.Attribute(AttributeNames.Message).Value : null; if (!String.IsNullOrEmpty(message) && message.Length > 9) { var stringId = message.Substring(9) // skip "$(string." .TrimEnd(')'); msg = LookupResourceString(stringId); } else { msg = t.Attribute(AttributeNames.Name) != null?t.Attribute(AttributeNames.Name).Value : null; if (String.IsNullOrEmpty(msg) && t.Name != null) { msg = t.Name.LocalName + "_" + IntAttribute(t, AttributeNames.Value); } } return(msg ?? string.Empty); }; // Populate tasks if (tasks != null) { var tq = from t in tasks.Elements() select new TaskDefinition { Id = IntAttribute(t, AttributeNames.Value), Name = findMessage(t) }; resolver.Tasks = tq.ToList(); } // Populate keywords if (keywords != null) { Func <XElement, string> LookupKeywordName = (t) => { if (t.Attribute(AttributeNames.Symbol) != null && t.Attribute(AttributeNames.Symbol).Value != null) { return(t.Attribute(AttributeNames.Symbol).Value.ToString()); } return(findMessage(t)); }; var kv = from t in keywords.Elements() let mask = ulong.Parse(t.Attribute("mask").Value.Substring(2), System.Globalization.NumberStyles.AllowHexSpecifier) select new KeywordDefinition { Name = LookupKeywordName(t), Mask = mask }; resolver.Keywords = kv.ToList(); } // Populate opcodes if (opcodes != null) { var op = from o in opcodes.Elements() select new OpcodeDefinition { Id = IntAttribute(o, AttributeNames.Value), Name = findMessage(o) }; resolver.Opcodes = op.ToList(); } if (resolver.Symbols == null) { resolver.Symbols = new List <EventDefinition>(); } if (resolver.Keywords == null) { resolver.Keywords = new List <KeywordDefinition>(); } if (resolver.Tasks == null) { resolver.Tasks = new List <TaskDefinition>(); } if (resolver.Opcodes == null) { resolver.Opcodes = new List <OpcodeDefinition>(); } if (resolver.Messages == null) { resolver.Messages = new List <MessagDefinition>(); } return(resolver); }
private Resolver CreateResolver(bool crimson, string providerName, string providerGuid, XElement events, XElement keywords, XElement tasks, IEnumerable<XElement> opcodes, XElement messages) { Resolver resolver; resolver = new CrimsonSymbolResolver(); resolver.ProviderName = providerName; resolver.ProviderId = Guid.Parse(providerGuid); if (messages != null) { var m = from t in messages.Elements() select new MessagDefinition { Id = (string)t.Attribute(AttributeNames.Id), Message = t.Attribute(AttributeNames.Value).Value }; resolver.Messages = m.ToList(); } resolver.Symbols = this.GetEventsFromCompiledManifests(resolver.ProviderId); Func<XElement, string> findMessage = (t) => { string msg = null; string message = t.Attribute(AttributeNames.Message) != null ? t.Attribute(AttributeNames.Message).Value : null; if (!String.IsNullOrEmpty(message) && message.Length > 9) { var stringId = message.Substring(9) // skip "$(string." .TrimEnd(')'); msg = LookupResourceString(stringId); } else { msg = t.Attribute(AttributeNames.Name) != null ? t.Attribute(AttributeNames.Name).Value : null; if (String.IsNullOrEmpty(msg) && t.Name != null) { msg = t.Name.LocalName + "_" + IntAttribute(t, AttributeNames.Value); } } return msg ?? string.Empty; }; // Populate tasks if (tasks != null) { var tq = from t in tasks.Elements() select new TaskDefinition { Id = IntAttribute(t, AttributeNames.Value), Name = findMessage(t) }; resolver.Tasks = tq.ToList(); } // Populate keywords if (keywords != null) { Func<XElement, string> LookupKeywordName = (t) => { if (t.Attribute(AttributeNames.Symbol) != null && t.Attribute(AttributeNames.Symbol).Value != null) { return t.Attribute(AttributeNames.Symbol).Value.ToString(); } return findMessage(t); }; var kv = from t in keywords.Elements() let mask = ulong.Parse(t.Attribute("mask").Value.Substring(2), System.Globalization.NumberStyles.AllowHexSpecifier) select new KeywordDefinition { Name = LookupKeywordName(t), Mask = mask }; resolver.Keywords = kv.ToList(); } // Populate opcodes if (opcodes != null) { var op = from o in opcodes.Elements() select new OpcodeDefinition { Id = IntAttribute(o, AttributeNames.Value), Name = findMessage(o) }; resolver.Opcodes = op.ToList(); } if (resolver.Symbols == null) resolver.Symbols = new List<EventDefinition>(); if (resolver.Keywords == null) resolver.Keywords = new List<KeywordDefinition>(); if (resolver.Tasks == null) resolver.Tasks = new List<TaskDefinition>(); if (resolver.Opcodes == null) resolver.Opcodes = new List<OpcodeDefinition>(); if (resolver.Messages == null) resolver.Messages = new List<MessagDefinition>(); return resolver; }