/// <summary> /// Create MA monitor /// </summary> private MessageAnalyzerMonitor(List <string> GroupList = null, bool isMAInstalled = false) { this.isMAInstalled = isMAInstalled; ConfigureEnvironment(); opnlist = new List <string>(); IMonitorSettings monitorSettings = MonitorFactory.CreateDefaultSettings(); string modelpath = null; if (isMAInstalled) { LiveTraceSession.EnsurePowerShellInitiation(); // If MMA installed, use OPNs under local app data, same as MMA UI, otherwise it will re-generate the CompilationCache if using MMA UI simutaneously. monitorSettings.Host = CreateHostForMAInstalled(); string OPNAndConfigurationPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Microsoft", "MessageAnalyzer", "OPNAndConfiguration"); modelpath = Path.Combine(OPNAndConfigurationPath, "Opns"); //OpnAndConfiguration\Opns\ in local app data } else { monitorSettings.Host = CreateHost(); modelpath = PlatformManager.ModelsDirectory; // PlatformManager.ModelsDirectory is: "OpnAndConfiguration\Opns\" string opnForEtw = Path.Combine(Path.GetDirectoryName(modelpath), "OpnForEtw"); // OpnAndConfiguration\OpnForEtw monitorSettings.ModelLoadPath.Add(opnForEtw); } if (GroupList == null) { monitorSettings.ModelLoadPath.Add(modelpath); opnlist.Add(modelpath); } else { modelpath = Path.GetDirectoryName((PlatformManager.ModelsDirectory)); // modelpath is set to the path of folder "OpnAndConfiguration" GroupList.ForEach(e => monitorSettings.ModelLoadPath.Add(modelpath + "\\" + e)); GroupList.ForEach(e => opnlist.Add(modelpath + "\\" + e)); } monitorSettings.ExtensionLoadPath.Add(PlatformManager.ExtensionsDirectory); monitor = MonitorFactory.CreateLocalMonitor(monitorSettings); monitor.Initialize(); ModelCatalog.WaitForInitialization(); monitor.CatchExceptionOnGetMessageData = true; }
/// <summary> /// Create Live Capture /// </summary> /// <param name="providerList">ETW Provider list</param> /// <returns></returns> public LiveTraceSession CreateLiveTraceSession(IList <string> providerList = null) { LiveTraceSession liveCapture = new LiveTraceSession(providerList); return(liveCapture); }