MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / Refresh

Method Refresh

WinArk/ProcessTable.cpp:172–216  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

170}
171
172void CProcessTable::Refresh() {
173 bool first = m_Table.data.info.empty();
174 auto count = (int)m_ProcMgr.EnumProcessAndThreads();
175
176 if (first) {
177 m_Table.data.info = m_ProcMgr.GetProcesses();
178 m_Table.data.n = count;
179 return;
180 }
181
182 auto tick = ::GetTickCount64();
183 count = (int)m_Table.data.info.size();
184 for (int i = 0; i < count; i++) {
185 auto& p = m_Table.data.info[i];
186 auto& px = GetProcessInfoEx(p.get());
187 if (px.IsTerminated && tick > px.TargetTime) {
188 m_ProcessesEx.erase(p.get());
189 m_Table.data.info.erase(m_Table.data.info.begin() + i);
190 i--;
191 count--;
192 continue;
193 }
194 if (px.IsNew && tick > px.TargetTime) {
195 px.IsNew = false;
196 }
197 }
198
199 for (auto& p : m_ProcMgr.GetNewProcesses()) {
200 m_Table.data.info.push_back(p);
201 count++;
202 auto& px = GetProcessInfoEx(p.get());
203 px.IsNew = true;
204 px.TargetTime = tick + 2000;
205 }
206
207 for (auto& p : m_ProcMgr.GetTerminatedProcesses()) {
208 auto& px = GetProcessInfoEx(p.get());
209 px.IsTerminated = true;
210 px.TargetTime = tick + 2000;
211 }
212
213 m_Table.data.n = count;
214
215 return;
216}
217
218ProcessInfoEx& CProcessTable::GetProcessInfoEx(WinSys::ProcessInfo* pi) const {
219 auto it = m_ProcessesEx.find(pi);

Callers

nothing calls this directly

Calls 5

emptyMethod · 0.80
EnumProcessAndThreadsMethod · 0.80
push_backMethod · 0.80
sizeMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected