Files
kvc/kvc/BrowserProcessManager.h
2025-09-30 15:31:30 +02:00

52 lines
1.6 KiB
C++

// BrowserProcessManager.h - Browser process lifecycle and cleanup management
#ifndef BROWSER_PROCESS_MANAGER_H
#define BROWSER_PROCESS_MANAGER_H
#include <Windows.h>
#include "OrchestratorCore.h"
#include "CommunicationLayer.h"
// RAII wrapper for Windows handle management with syscall-based cleanup
struct HandleDeleter
{
void operator()(HANDLE h) const noexcept;
};
using UniqueHandle = std::unique_ptr<void, HandleDeleter>;
// Manages target browser process lifecycle
class TargetProcess
{
public:
TargetProcess(const Configuration& config, const Console& console);
// Creates browser process in suspended state for injection
void createSuspended();
// Terminates the target process using direct syscall
void terminate();
HANDLE getProcessHandle() const noexcept { return m_hProcess.get(); }
private:
// Validates architecture compatibility between orchestrator and target
void checkArchitecture();
const char* getArchName(USHORT arch) const noexcept;
const Configuration& m_config;
const Console& m_console;
DWORD m_pid = 0;
UniqueHandle m_hProcess;
UniqueHandle m_hThread;
USHORT m_arch = 0;
};
// Terminates all running browser processes to release database file locks
void KillBrowserProcesses(const Configuration& config, const Console& console);
// Terminates browser network service which often holds database locks
void KillBrowserNetworkService(const Configuration& config, const Console& console);
// Checks availability of Windows native SQLite library
bool CheckWinSQLite3Available();
#endif // BROWSER_PROCESS_MANAGER_H