Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetThreadInfo()

static ThreadInfo System.Diagnostics.NtProcessManager.GetThreadInfo ( ReadOnlySpan< byte > instanceData,
global::Interop::Advapi32::PERF_COUNTER_DEFINITION[] counters )
inlinestaticprivate

Definition at line 299 of file NtProcessManager.cs.

300 {
301 ThreadInfo threadInfo = new ThreadInfo();
302 for (int i = 0; i < counters.Length; i++)
303 {
304 global::Interop.Advapi32.PERF_COUNTER_DEFINITION pERF_COUNTER_DEFINITION = counters[i];
305 long num = ReadCounterValue(pERF_COUNTER_DEFINITION.CounterType, instanceData.Slice(pERF_COUNTER_DEFINITION.CounterOffset));
306 switch ((ValueId)pERF_COUNTER_DEFINITION.CounterNameTitlePtr)
307 {
308 case ValueId.ProcessId:
309 threadInfo._processId = (int)num;
310 break;
311 case ValueId.ThreadId:
312 threadInfo._threadId = (ulong)num;
313 break;
314 case ValueId.BasePriority:
315 threadInfo._basePriority = (int)num;
316 break;
317 case ValueId.CurrentPriority:
318 threadInfo._currentPriority = (int)num;
319 break;
320 case ValueId.StartAddress:
321 threadInfo._startAddress = (IntPtr)num;
322 break;
323 case ValueId.ThreadState:
324 threadInfo._threadState = (ThreadState)num;
325 break;
326 case ValueId.ThreadWaitReason:
327 threadInfo._threadWaitReason = GetThreadWaitReason((int)num);
328 break;
329 }
330 }
331 return threadInfo;
332 }
static long ReadCounterValue(int counterType, ReadOnlySpan< byte > data)
static ThreadWaitReason GetThreadWaitReason(int value)

References System.Diagnostics.NtProcessManager.GetThreadWaitReason(), System.Diagnostics.NtProcessManager.ReadCounterValue(), and System.Diagnostics.NtProcessManager.ThreadState.

Referenced by System.Diagnostics.NtProcessManager.GetProcessInfos().