2023-08-16 12:47:09 +02:00
|
|
|
#ifndef MANAGER_H
|
|
|
|
#define MANAGER_H
|
2023-08-15 14:02:17 +02:00
|
|
|
|
|
|
|
#include <string>
|
2023-08-16 11:28:46 +02:00
|
|
|
#include <winternl.h>
|
2023-08-15 14:02:17 +02:00
|
|
|
#include <Windows.h>
|
2023-08-16 11:28:46 +02:00
|
|
|
#include <mutex>
|
|
|
|
#include <thread>
|
|
|
|
#include <vector>
|
2023-08-15 14:02:17 +02:00
|
|
|
|
2023-08-16 11:28:46 +02:00
|
|
|
#include "process.h"
|
|
|
|
|
|
|
|
namespace usermode
|
2023-08-15 14:02:17 +02:00
|
|
|
{
|
2023-08-16 12:47:09 +02:00
|
|
|
/*
|
|
|
|
* The manager class is meant to abstract away the interaction between the Process
|
|
|
|
* class and the threadpool class to allow a single thread (or multiple) to easily run
|
|
|
|
* the core business logic of running tasks in a certain order.
|
|
|
|
*/
|
2023-08-15 14:02:17 +02:00
|
|
|
class Manager
|
|
|
|
{
|
|
|
|
std::string process_name;
|
2023-08-16 11:28:46 +02:00
|
|
|
std::unique_ptr<Process> process;
|
2023-08-15 14:02:17 +02:00
|
|
|
|
|
|
|
public:
|
|
|
|
Manager( std::string ProcessName );
|
2023-08-16 11:28:46 +02:00
|
|
|
~Manager();
|
|
|
|
|
|
|
|
void ValidateProcessThreads();
|
2023-08-15 14:02:17 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|