internal static uint FindDocument()

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;
        }