private unsafe void EtwEnableCallBack([In] ref Guid sourceId, [In] int controlCode, [In] byte setLevel, [In] long anyKeyword, [In] long allKeyword, [In] UnsafeNativeMethods.ManifestEtw.EVENT_FILTER_DESCRIPTOR *filterData, [In] void *callbackContext) { try { ControllerCommand command = ControllerCommand.Update; IDictionary <string, string> arguments = (IDictionary <string, string>)null; bool flag1 = false; if (controlCode == 1) { this.m_enabled = true; this.m_level = setLevel; this.m_anyKeywordMask = anyKeyword; this.m_allKeywordMask = allKeyword; List <Tuple <EventProvider.SessionInfo, bool> > sessions = this.GetSessions(); foreach (Tuple <EventProvider.SessionInfo, bool> tuple in sessions) { int num1 = tuple.Item1.sessionIdBit; int etwSessionId = tuple.Item1.etwSessionId; bool flag2 = tuple.Item2; flag1 = true; arguments = (IDictionary <string, string>)null; if (sessions.Count > 1) { filterData = (UnsafeNativeMethods.ManifestEtw.EVENT_FILTER_DESCRIPTOR *)null; } byte[] data; int dataStart; if (flag2 && this.GetDataFromController(etwSessionId, filterData, out command, out data, out dataStart)) { arguments = (IDictionary <string, string>) new Dictionary <string, string>(4); int null1; for (; dataStart < data.Length; dataStart = null1 + 1) { int null2 = EventProvider.FindNull(data, dataStart); int num2 = null2 + 1; null1 = EventProvider.FindNull(data, num2); if (null1 < data.Length) { string string1 = Encoding.UTF8.GetString(data, dataStart, null2 - dataStart); string string2 = Encoding.UTF8.GetString(data, num2, null1 - num2); arguments[string1] = string2; } } } this.OnControllerCommand(command, arguments, flag2 ? num1 : -num1, etwSessionId); } } else if (controlCode == 0) { this.m_enabled = false; this.m_level = (byte)0; this.m_anyKeywordMask = 0L; this.m_allKeywordMask = 0L; this.m_liveSessions = (List <EventProvider.SessionInfo>)null; } else { if (controlCode != 2) { return; } command = ControllerCommand.SendManifest; } if (flag1) { return; } this.OnControllerCommand(command, arguments, 0, 0); } catch (Exception ex) { } }
private unsafe void EtwEnableCallBack([In] ref Guid sourceId, [In] int controlCode, [In] byte setLevel, [In] long anyKeyword, [In] long allKeyword, [In] UnsafeNativeMethods.ManifestEtw.EVENT_FILTER_DESCRIPTOR *filterData, [In] void *callbackContext) { try { ControllerCommand command = ControllerCommand.Update; IDictionary <string, string> dictionary = null; bool flag = false; if (controlCode == 1) { this.m_enabled = true; this.m_level = setLevel; this.m_anyKeywordMask = anyKeyword; this.m_allKeywordMask = allKeyword; List <Tuple <EventProvider.SessionInfo, bool> > sessions = this.GetSessions(); using (List <Tuple <EventProvider.SessionInfo, bool> > .Enumerator enumerator = sessions.GetEnumerator()) { while (enumerator.MoveNext()) { Tuple <EventProvider.SessionInfo, bool> tuple = enumerator.Current; int sessionIdBit = tuple.Item1.sessionIdBit; int etwSessionId = tuple.Item1.etwSessionId; bool item = tuple.Item2; flag = true; dictionary = null; if (sessions.Count > 1) { filterData = null; } byte[] array; int i; if (item && this.GetDataFromController(etwSessionId, filterData, out command, out array, out i)) { dictionary = new Dictionary <string, string>(4); while (i < array.Length) { int num = EventProvider.FindNull(array, i); int num2 = num + 1; int num3 = EventProvider.FindNull(array, num2); if (num3 < array.Length) { string @string = Encoding.UTF8.GetString(array, i, num - i); string string2 = Encoding.UTF8.GetString(array, num2, num3 - num2); dictionary[@string] = string2; } i = num3 + 1; } } this.OnControllerCommand(command, dictionary, item ? sessionIdBit : (-sessionIdBit), etwSessionId); } goto IL_162; } } if (controlCode == 0) { this.m_enabled = false; this.m_level = 0; this.m_anyKeywordMask = 0L; this.m_allKeywordMask = 0L; this.m_liveSessions = null; } else { if (controlCode != 2) { return; } command = ControllerCommand.SendManifest; } IL_162: if (!flag) { this.OnControllerCommand(command, dictionary, 0, 0); } } catch (Exception) { } }