msos.UnifiedStackTraces.GetThreadInfo C# (CSharp) Method

GetThreadInfo() private method

private GetThreadInfo ( uint threadIndex ) : ThreadInformation
threadIndex uint
return ThreadInformation
        private ThreadInformation GetThreadInfo(uint? threadIndex)
        {
            uint engineThreadId, osThreadId;
            if (threadIndex.HasValue)
            {
                uint[] engineThreadIds = new uint[1];
                uint[] osThreadIds = new uint[1];
                Util.VerifyHr(((IDebugSystemObjects)_debugClient).GetThreadIdsByIndex(threadIndex.Value, 1, engineThreadIds, osThreadIds));
                engineThreadId = engineThreadIds[0];
                osThreadId = osThreadIds[0];
            }
            else
            {
                Util.VerifyHr(((IDebugSystemObjects)_debugClient).GetCurrentThreadId(out engineThreadId));
                Util.VerifyHr(((IDebugSystemObjects)_debugClient).GetCurrentThreadSystemId(out osThreadId));
            }
            ClrThread managedThread = _runtime.Threads.FirstOrDefault(thread => thread.OSThreadId == osThreadId);
            return new ThreadInformation
            {
                Index = threadIndex ?? uint.MaxValue,
                EngineThreadId = engineThreadId,
                OSThreadId = osThreadId,
                ManagedThread = managedThread
            };
        }