public DynamicTraceEventParser(TraceEventSource source) : base(source) { if (source == null) // Happens during deserialization. { return; } // Try to retieve persisted state state = (DynamicTraceEventParserState)StateObject; if (state == null) { StateObject = state = new DynamicTraceEventParserState(); dynamicManifests = new Dictionary <Guid, DynamicManifestInfo>(); this.source.RegisterUnhandledEvent(delegate(TraceEvent data) { if (data.Opcode != (TraceEventOpcode)0xFE) { return; } if (data.ID != 0 && (byte)data.ID != 0xFE) // Zero is for classic ETW. { return; } // Look up our information. DynamicManifestInfo dynamicManifest; if (!dynamicManifests.TryGetValue(data.ProviderGuid, out dynamicManifest)) { dynamicManifest = new DynamicManifestInfo(); dynamicManifests.Add(data.ProviderGuid, dynamicManifest); } ProviderManifest provider = dynamicManifest.AddChunk(data); // We have a completed manifest, add it to our list. if (provider != null) { AddProvider(provider); } }); } else if (allCallbackCalled) { foreach (ProviderManifest provider in state.providers.Values) { provider.AddProviderEvents(source, allCallback); } } }
public DynamicTraceEventParser(TraceEventSource source) : base(source) { if (source == null) // Happens during deserialization. return; // Try to retieve persisted state state = (DynamicTraceEventParserState)StateObject; if (state == null) { StateObject = state = new DynamicTraceEventParserState(); dynamicManifests = new Dictionary<Guid, DynamicManifestInfo>(); this.source.RegisterUnhandledEvent(delegate(TraceEvent data) { if (data.ID != (TraceEventID)0xFFFE) return data; // Look up our information. DynamicManifestInfo dynamicManifest; if (!dynamicManifests.TryGetValue(data.ProviderGuid, out dynamicManifest)) { dynamicManifest = new DynamicManifestInfo(); dynamicManifests.Add(data.ProviderGuid, dynamicManifest); } ProviderManifest provider = dynamicManifest.AddChunk(data); // We have a completed manifest, add it to our list. if (provider != null) { AddDynamicProvider(provider); //SLAB update this.ManifestReceived(provider); } return data; }); } else if (allCallbackCalled) { foreach (ProviderManifest provider in state.providers.Values) provider.AddProviderEvents(source, allCallback); } }