comparison dep/animia/src/fd/win32.cc @ 139:478f3b366199

dep/animia: separate lots of things, use base class for OS stuff
author Paper <mrpapersonic@gmail.com>
date Sun, 12 Nov 2023 16:43:07 -0500
parents 28842a8d0c6b
children 1e696863b54c
comparison
equal deleted inserted replaced
138:28842a8d0c6b 139:478f3b366199
197 return false; 197 return false;
198 198
199 return true; 199 return true;
200 } 200 }
201 201
202 bool GetAllPids(std::set<pid_t>& pids) { 202 bool Win32FdTools::GetAllPids(std::set<pid_t>& pids) {
203 HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 203 HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
204 if (hProcessSnap == INVALID_HANDLE_VALUE) 204 if (hProcessSnap == INVALID_HANDLE_VALUE)
205 return false; 205 return false;
206 206
207 PROCESSENTRY32 pe32; 207 PROCESSENTRY32 pe32;
218 ::CloseHandle(hProcessSnap); 218 ::CloseHandle(hProcessSnap);
219 219
220 return true; 220 return true;
221 } 221 }
222 222
223 bool GetProcessName(pid_t pid, std::string& result) { 223 bool Win32FdTools::GetProcessName(pid_t pid, std::string& result) {
224 unsigned long ret_size = 0; // size given by GetModuleBaseNameW 224 unsigned long ret_size = 0; // size given by GetModuleBaseNameW
225 Handle handle(::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid)); 225 Handle handle(::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid));
226 if (!handle.get()) 226 if (!handle.get())
227 return false; 227 return false;
228 228
240 240
241 return true; 241 return true;
242 } 242 }
243 243
244 /* this could be changed to being a callback, but... I'm too lazy right now :) */ 244 /* this could be changed to being a callback, but... I'm too lazy right now :) */
245 bool EnumerateOpenFiles(const std::set<pid_t>& pids, std::vector<std::tuple<pid_t, std::string>>& files) { 245 bool Win32FdTools::EnumerateOpenFiles(const std::set<pid_t>& pids, std::vector<std::tuple<pid_t, std::string>>& files) {
246 std::unordered_map<pid_t, Handle> proc_handles; 246 std::unordered_map<pid_t, Handle> proc_handles;
247 247
248 for (const pid_t& pid : pids) { 248 for (const pid_t& pid : pids) {
249 const HANDLE handle = ::OpenProcess(PROCESS_DUP_HANDLE, false, pid); 249 const HANDLE handle = ::OpenProcess(PROCESS_DUP_HANDLE, false, pid);
250 if (handle) 250 if (handle)