//FIX ME!!! This is a hack due to Win8:235420 private void PassThroughLine(DEBUG_OUTPUT Mask, string line, bool textIsDml, DEBUG_OUTCBF dmlFlags) { if (ReEnter == false) { ReEnter = true; DEBUG_OUTCTL outctl; if (PassthroughUtilities.IsFirstCommand) { outctl = DEBUG_OUTCTL.ALL_CLIENTS; } else { outctl = DEBUG_OUTCTL.THIS_CLIENT | DEBUG_OUTCTL.NOT_LOGGED; } if (textIsDml) { outctl |= DEBUG_OUTCTL.DML; } if (Mask.HasFlag(DEBUG_OUTPUT.ADDR_TRANSLATE) && (Mask.HasFlag(DEBUG_OUTPUT.NORMAL | DEBUG_OUTPUT.ERROR | DEBUG_OUTPUT.WARNING | DEBUG_OUTPUT.VERBOSE) == false)) { Mask = Mask | DEBUG_OUTPUT.NORMAL; } try { PreviousMask = Mask; if (InstalledThreadId == Thread.CurrentThread.ManagedThreadId) { PassthroughUtilities.DebugClient.FlushCallbacks(); PassthroughUtilities.OutputMaskRestore(); PassthroughUtilities.ControlledOutputWide(outctl, Mask, line); PassthroughUtilities.OutputMaskDisableAll(); } else { BufferedOutput.Add(new BufferLine(outctl, Mask, line)); } } catch { DebugUtilities.CoUninitialize(); if (InstalledThreadId == Thread.CurrentThread.ManagedThreadId) { PassthroughUtilities.OutputMaskRestore(); PassthroughUtilities.ControlledOutputWide(outctl, Mask, line); PassthroughUtilities.OutputMaskDisableAll(); } else { BufferedOutput.Add(new BufferLine(outctl, Mask, line)); } } ReEnter = false; } }
//FIX ME!!! This is a hack due to Win8:235420 private void PassThroughLine(CallbackData cbd) { if (string.IsNullOrEmpty(cbd.Data?.ToString())) { return; } if (_reEnter == false) { _reEnter = true; if (cbd.Mask.HasFlag(DEBUG_OUTPUT.ADDR_TRANSLATE) && cbd.Mask.HasFlag(DEBUG_OUTPUT.NORMAL | DEBUG_OUTPUT.ERROR | DEBUG_OUTPUT.WARNING | DEBUG_OUTPUT.VERBOSE) == false) { cbd.Mask = cbd.Mask | DEBUG_OUTPUT.NORMAL; } try { if (_installedThreadId == Thread.CurrentThread.ManagedThreadId) { foreach (var bufferLine in _bufferedOutput) { bufferLine.Data.Insert(0, "BUFFERED "); bufferLine.OutputLineMaskDisabled(_passthroughUtilities); } _bufferedOutput.Clear(); cbd.OutputLineMaskDisabled(_passthroughUtilities); } else { _bufferedOutput.Add(cbd); } } catch { DebugUtilities.CoUninitialize(); if (_installedThreadId == Thread.CurrentThread.ManagedThreadId) { cbd.OutputLineMaskDisabled(_passthroughUtilities); } else { _bufferedOutput.Add(cbd); } } _reEnter = false; } }