| 773 | } |
| 774 | |
| 775 | static bool cbm_win_job_active(cbm_subprocess_t *process, bool *known) { |
| 776 | JOBOBJECT_BASIC_ACCOUNTING_INFORMATION accounting; |
| 777 | ZeroMemory(&accounting, sizeof(accounting)); |
| 778 | if (!QueryInformationJobObject(process->job, JobObjectBasicAccountingInformation, &accounting, |
| 779 | sizeof(accounting), NULL)) { |
| 780 | *known = false; |
| 781 | return true; /* fail closed: an unqueryable job is never declared quiescent */ |
| 782 | } |
| 783 | *known = true; |
| 784 | return accounting.ActiveProcesses != 0; |
| 785 | } |
| 786 | |
| 787 | static void cbm_win_begin_termination(cbm_subprocess_t *process, uint64_t now) { |
| 788 | if (process->termination_started) { |
no outgoing calls
no test coverage detected