59 {
61 int num = 0;
62 while (true)
63 {
64 ref readonly global::Interop.NtDll.SYSTEM_PROCESS_INFORMATION
reference =
ref MemoryMarshal.AsRef<global::Interop.NtDll.SYSTEM_PROCESS_INFORMATION>(data.
Slice(num));
67 {
69 {
72 PoolPagedBytes = (
long)(ulong)
reference.QuotaPagedPoolUsage,
73 PoolNonPagedBytes = (
long)(ulong)
reference.QuotaNonPagedPoolUsage,
74 VirtualBytes = (
long)(ulong)
reference.VirtualSize,
75 VirtualBytesPeak = (
long)(ulong)
reference.PeakVirtualSize,
76 WorkingSetPeak = (
long)(ulong)
reference.PeakWorkingSetSize,
77 WorkingSet = (
long)(ulong)
reference.WorkingSetSize,
78 PageFileBytesPeak = (
long)(ulong)
reference.PeakPagefileUsage,
79 PageFileBytes = (
long)(ulong)
reference.PagefileUsage,
80 PrivateBytes = (
long)(ulong)
reference.PrivatePageCount,
82 HandleCount = (int)reference.HandleCount
83 };
85 {
86 if (
processInfo.ProcessId == NtProcessManager.SystemProcessID)
87 {
88 processInfo.ProcessName = "System";
89 }
91 {
92 processInfo.ProcessName = "Idle";
93 }
94 else
95 {
97 }
98 }
99 else
100 {
103 }
105 int num3 = num +
sizeof(global::Interop.NtDll.SYSTEM_PROCESS_INFORMATION);
106 for (
int i = 0;
i <
reference.NumberOfThreads;
i++)
107 {
109 ThreadInfo
item =
new ThreadInfo
110 {
111 _processId = (int)
reference2.ClientId.UniqueProcess,
112 _threadId = (ulong)(long)
reference2.ClientId.UniqueThread,
117 _threadWaitReason = NtProcessManager.GetThreadWaitReason((
int)
reference2.WaitReason)
118 };
120 num3 +=
sizeof(global::Interop.NtDll.SYSTEM_THREAD_INFORMATION);
121 }
122 }
124 {
125 break;
126 }
128 }
132 }
void Add(TKey key, TValue value)
static string GetProcessShortName(ReadOnlySpan< char > name)
static CultureInfo InvariantCulture
ReadOnlySpan< T > Slice(int start)