| 153 | } |
| 154 | |
| 155 | std::wstring CKernelModuleTable::GetCompanyName(std::wstring path) { |
| 156 | BYTE buffer[1 << 12]; |
| 157 | WCHAR* companyName = nullptr; |
| 158 | CString filePath = path.c_str(); |
| 159 | if (filePath.Mid(1, 2) == "??") |
| 160 | filePath = filePath.Mid(4); |
| 161 | if (::GetFileVersionInfo(filePath, 0, sizeof(buffer), buffer)) { |
| 162 | WORD* langAndCodePage; |
| 163 | UINT len; |
| 164 | if (::VerQueryValue(buffer, L"\\VarFileInfo\\Translation", (void**)&langAndCodePage, &len)) { |
| 165 | CString text; |
| 166 | text.Format(L"\\StringFileInfo\\%04x%04x\\CompanyName", langAndCodePage[0], langAndCodePage[1]); |
| 167 | |
| 168 | if (::VerQueryValue(buffer, text, (void**)&companyName, &len)) |
| 169 | return companyName; |
| 170 | } |
| 171 | } |
| 172 | return L""; |
| 173 | } |
| 174 | |
| 175 | LRESULT CKernelModuleTable::OnRefresh(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { |
| 176 | DoRefresh(); |
no outgoing calls
no test coverage detected