private IStream SaveDocumentWindowPositions(IVsUIShellDocumentWindowMgr windowsMgr) { if (windowsMgr == null) { Debug.Assert(false, "IVsUIShellDocumentWindowMgr", String.Empty, 0); return(null); } IStream stream; NativeMethods.CreateStreamOnHGlobal(IntPtr.Zero, true, out stream); if (stream == null) { Debug.Assert(false, "CreateStreamOnHGlobal", String.Empty, 0); return(null); } int hr = windowsMgr.SaveDocumentWindowPositions(0, stream); if (hr != VSConstants.S_OK) { Debug.Assert(false, "SaveDocumentWindowPositions", String.Empty, hr); return(null); } // Move to the beginning of the stream // In preparation for reading LARGE_INTEGER l = new LARGE_INTEGER(); ULARGE_INTEGER[] ul = new ULARGE_INTEGER[1]; ul[0] = new ULARGE_INTEGER(); l.QuadPart = 0; //Seek to the beginning of the stream stream.Seek(l, 0, ul); return(stream); }
public async Task <string> GetDocumentWindowPositionsAsync() { using (var stream = new VsOleStream()) { await _package.JoinableTaskFactory.SwitchToMainThreadAsync(); var result = _vsDocumentWindowMgr.SaveDocumentWindowPositions(0, stream); if (result != VSConstants.S_OK) { return(null); } stream.Seek(0, SeekOrigin.Begin); return(Convert.ToBase64String(stream.ToArray())); } }
private (List <WorkspaceBreakpoint>, string) GetWorkspaceItem() { var breakpoints = new List <WorkspaceBreakpoint>(); foreach (Breakpoint breakpoint in _dte.Debugger.Breakpoints) { breakpoints.Add(new WorkspaceBreakpoint() { Filename = breakpoint.File, Line = breakpoint.FileLine, Enabled = breakpoint.Enabled }); } IStream stream; NativeHelpers.CreateStreamOnHGlobal(IntPtr.Zero, true, out stream); ErrorHandler.ThrowOnFailure(_documentWindowMgr.SaveDocumentWindowPositions(0U, stream)); stream.Rewind(); var windowsBase64 = System.Convert.ToBase64String(stream.ToByteArray()); return(breakpoints, windowsBase64); }
private IStream SaveDocumentWindowPositions(IVsUIShellDocumentWindowMgr windowsMgr) { if (windowsMgr == null) { Debug.Assert(false, "IVsUIShellDocumentWindowMgr", String.Empty, 0); return null; } IStream stream; NativeMethods.CreateStreamOnHGlobal(IntPtr.Zero, true, out stream); if (stream == null) { Debug.Assert(false, "CreateStreamOnHGlobal", String.Empty, 0); return null; } int hr = windowsMgr.SaveDocumentWindowPositions(0, stream); if (hr != VSConstants.S_OK) { Debug.Assert(false, "SaveDocumentWindowPositions", String.Empty, hr); return null; } // Move to the beginning of the stream // In preparation for reading LARGE_INTEGER l = new LARGE_INTEGER(); ULARGE_INTEGER[] ul = new ULARGE_INTEGER[1]; ul[0] = new ULARGE_INTEGER(); l.QuadPart = 0; //Seek to the beginning of the stream stream.Seek(l, 0, ul); return stream; }