in src/Sarif.Viewer.VisualStudio.Core/SdkUiUtilities.cs [224:279]
internal static uint FindDocument(IVsRunningDocumentTable runningDocTable, string file)
{
ThreadHelper.ThrowIfNotOnUIThread();
// Unused variables
IVsHierarchy hierarchy;
uint itemId;
IntPtr docData = IntPtr.Zero;
uint cookieDocLock;
int hr = runningDocTable.FindAndLockDocument((uint)_VSRDTFLAGS.RDT_NoLock, file, out hierarchy, out itemId, out docData, out cookieDocLock);
// Although we don't use it, we still need to release the it
if (docData != IntPtr.Zero)
{
Marshal.Release(docData);
docData = IntPtr.Zero;
}
if (ErrorHandler.Failed(hr))
{
throw Marshal.GetExceptionForHR(hr);
}
if (cookieDocLock > 0)
{
// Document is already open
uint rdtFlags;
// Unused variables
uint readLocks;
uint editLocks;
string documentName;
hr = runningDocTable.GetDocumentInfo(cookieDocLock, out rdtFlags, out readLocks, out editLocks, out documentName, out hierarchy, out itemId, out docData);
// Although we don't use it, we still need to release the it
if (docData != IntPtr.Zero)
{
Marshal.Release(docData);
docData = IntPtr.Zero;
}
if (ErrorHandler.Failed(hr))
{
throw Marshal.GetExceptionForHR(hr);
}
if ((rdtFlags & ((uint)_VSRDTFLAGS.RDT_ProjSlnDocument)) > 0)
{
throw Marshal.GetExceptionForHR(VSConstants.E_FAIL);
}
}
return cookieDocLock;
}