Consider looking into OSS that uses NtQuery* related OS functions to find which processes have which pipes open. Issues previously were that it could be slow and that it can randomly hang when getting the name of some pipes. Running with threads we terminate on timeout could mitigate the hangs and could help with the perf. Adding multithreading complicated the code but perhaps OSS code already does this that we might use.
Consider looking into OSS that uses NtQuery* related OS functions to find which processes have which pipes open. Issues previously were that it could be slow and that it can randomly hang when getting the name of some pipes. Running with threads we terminate on timeout could mitigate the hangs and could help with the perf. Adding multithreading complicated the code but perhaps OSS code already does this that we might use.