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

Method BuildEventsTree

WinArk/EventsDlg.cpp:11–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9}
10
11void CEventsDlg::BuildEventsTree(const EventsConfiguration& config) {
12 m_Tree.LockWindowUpdate(TRUE);
13
14 m_Tree.DeleteAllItems();
15 for (auto& category : KernelEventCategory::GetAllCategories()) {
16 if (category.Advanced == m_Advanced) {
17 int image = CEtwView::GetImageFromEventName(category.Name.c_str());
18 auto item = m_Tree.InsertItem(category.Name.c_str(), image, image, TVI_ROOT, TVI_LAST);
19 if (m_Advanced && !category.Advanced)
20 item.SetState(TVIS_BOLD, TVIS_BOLD);
21
22 item.SetData((DWORD_PTR)&category);
23 auto cat = config.GetCategory(category.Name.c_str());
24 for (auto& evt : category.Events) {
25 image = CEtwView::GetImageFromEventName(evt.Name.c_str());
26 auto child = item.InsertAfter(evt.Name.c_str(), TVI_LAST, image);
27 child.SetData((DWORD_PTR)&evt);
28 if (cat && cat->Contains(evt.Opcode))
29 m_Tree.SetCheckState(child, TRUE);
30 }
31 if (cat) {
32 if (cat->Opcodes.empty()) {
33 // all events must be checked
34 CheckTreeChildren(item, TRUE);
35 m_Tree.SetCheckState(item, TRUE);
36 }
37 else {
38 item.Expand(TVE_EXPAND);
39 }
40 }
41 item.SortChildren(FALSE);
42 }
43 }
44 m_Tree.SortChildren(TVI_ROOT, FALSE);
45 m_Tree.LockWindowUpdate(FALSE);
46}
47
48LRESULT CEventsDlg::OnInitDialog(UINT, WPARAM, LPARAM, BOOL&) {
49 DlgResize_Init(true);

Callers

nothing calls this directly

Calls 6

InsertItemMethod · 0.80
SetDataMethod · 0.80
ContainsMethod · 0.80
emptyMethod · 0.80
ExpandMethod · 0.80
GetCategoryMethod · 0.45

Tested by

no test coverage detected