bool JackEngine::Process(jack_time_t cur_cycle_begin, jack_time_t prev_cycle_end) { bool res = true; // Cycle begin fEngineControl->CycleBegin(fClientTable, fGraphManager, cur_cycle_begin, prev_cycle_end); // Graph if (fGraphManager->IsFinishedGraph()) { ProcessNext(cur_cycle_begin); res = true; } else { jack_log("Process: graph not finished!"); if (cur_cycle_begin > fLastSwitchUsecs + fEngineControl->fTimeOutUsecs) { jack_log("Process: switch to next state delta = %ld", long(cur_cycle_begin - fLastSwitchUsecs)); ProcessNext(cur_cycle_begin); res = true; } else { jack_log("Process: waiting to switch delta = %ld", long(cur_cycle_begin - fLastSwitchUsecs)); ProcessCurrent(cur_cycle_begin); res = false; } } // Cycle end fEngineControl->CycleEnd(fClientTable); return res; }
BOOL CToolhelpHandler::PopulateProcesses() { BOOL bResult = FALSE; CExeModuleInstance* pProcessInfo; HANDLE hSnapshot = INVALID_HANDLE_VALUE; if (TRUE == Initialize()) { hSnapshot = m_pfnCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); PROCESSENTRY32 pe32 = { sizeof(pe32) }; for (BOOL fOk = ProcessFirst(hSnapshot, &pe32); fOk; fOk = ProcessNext(hSnapshot, &pe32)) { pProcessInfo = new CExeModuleInstance( pe32.szExeFile, (HINSTANCE)pe32.th32ModuleID, pe32.th32ProcessID); m_pProcesses->Add(*pProcessInfo); pProcessInfo->PopulateModules(this); } // for if (hSnapshot != INVALID_HANDLE_VALUE) ::CloseHandle(hSnapshot); bResult = TRUE; } return bResult; }
////////////////////////////////////////////////////////////////////////////// // PopulateProcess // // Populate all modules of a single process // ////////////////////////////////////////////////////////////////////////////// BOOL CToolhelpHandler::PopulateProcess(DWORD dwProcessId, BOOL bPopulateModules) { BOOL bResult = FALSE; CExeModuleInstance* pProcessInfo; HANDLE hSnapshot = INVALID_HANDLE_VALUE; if (TRUE == Initialize()) { hSnapshot = m_pfnCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, dwProcessId); PROCESSENTRY32 pe32 = { sizeof(pe32) }; for (BOOL bOk = ProcessFirst(hSnapshot, &pe32); bOk; bOk = ProcessNext(hSnapshot, &pe32)) { if ( (dwProcessId != NULL) && (dwProcessId != pe32.th32ProcessID) ) continue; pProcessInfo = new CExeModuleInstance( this, pe32.szExeFile, NULL, // We will fix up later this value pe32.th32ProcessID ); m_pProcesses->Add(*pProcessInfo); if (bPopulateModules) pProcessInfo->PopulateModules(); if (dwProcessId != NULL) break; } // for if (hSnapshot != INVALID_HANDLE_VALUE) ::CloseHandle(hSnapshot); bResult = TRUE; } return bResult; }