| 90 | |
| 91 | |
| 92 | CProcessHandleTable::CProcessHandleTable(BarInfo& bars, TableInfo& table, PCWSTR type, DWORD pid) |
| 93 | : CTable(bars, table), m_HandleType(type), m_Pid(pid) { |
| 94 | SetTableWindowInfo(bars.nbar); |
| 95 | m_hProcess.reset(DriverHelper::OpenProcess(pid, SYNCHRONIZE)); |
| 96 | if (pid) { |
| 97 | auto hProcess = DriverHelper::OpenProcess(pid, SYNCHRONIZE | PROCESS_QUERY_INFORMATION); |
| 98 | m_HandleTracker.reset(new ProcessHandleTracker(hProcess)); |
| 99 | if (!m_HandleTracker->IsValid()) { |
| 100 | AtlMessageBox(nullptr, (L"Failed to open handle to process " + std::to_wstring(pid)).c_str(), IDS_TITLE, MB_ICONERROR); |
| 101 | m_HandleTracker.reset(); |
| 102 | } |
| 103 | } |
| 104 | } |
| 105 | |
| 106 | int CProcessHandleTable::ParseTableEntry(CString& s, char& mask, int& select, std::shared_ptr<WinSys::HandleInfo>& info, int column) { |
| 107 | switch (column) { |