| 102 | } |
| 103 | |
| 104 | int CKernelModuleTable::ParseTableEntry(CString& s, char& mask, int& select, std::shared_ptr<WinSys::KernelModuleInfo>& info, int column) { |
| 105 | switch (column) { |
| 106 | case 0: |
| 107 | s = info->Name.c_str(); |
| 108 | break; |
| 109 | case 1: |
| 110 | s.Format(L"0x%p", info->ImageBase); |
| 111 | break; |
| 112 | case 2: |
| 113 | s.Format(L"0x%X", info->ImageSize); |
| 114 | break; |
| 115 | case 3: |
| 116 | s.Format(L"%u", info->LoadOrderIndex); |
| 117 | break; |
| 118 | case 4: |
| 119 | { |
| 120 | std::wstring path = Helpers::StringToWstring(info->FullPath); |
| 121 | s = GetCompanyName(path).c_str(); |
| 122 | if (s.Find(L"Microsoft") == -1 && s.Find(L"YuanOS") == -1) { |
| 123 | select |= DRAW_HILITE; |
| 124 | } |
| 125 | break; |
| 126 | } |
| 127 | case 5: |
| 128 | s = info->FullPath.c_str(); |
| 129 | break; |
| 130 | default: |
| 131 | break; |
| 132 | } |
| 133 | return s.GetLength(); |
| 134 | } |
| 135 | |
| 136 | bool CKernelModuleTable::CompareItems(const std::shared_ptr<WinSys::KernelModuleInfo>& p1, const std::shared_ptr<WinSys::KernelModuleInfo>& p2, int col, bool asc) { |
| 137 | switch (static_cast<KernelModuleColumn>(col)) { |