2023-08-17 10:45:50 +02:00
|
|
|
#ifndef UMANAGER_H
|
|
|
|
#define UMANAGER_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-17 10:45:50 +02:00
|
|
|
class UManager
|
2023-08-15 14:02:17 +02:00
|
|
|
{
|
2023-08-16 11:28:46 +02:00
|
|
|
std::unique_ptr<Process> process;
|
2023-08-17 10:45:50 +02:00
|
|
|
std::shared_ptr<global::ThreadPool> thread_pool;
|
2023-08-15 14:02:17 +02:00
|
|
|
|
|
|
|
public:
|
2023-08-17 10:45:50 +02:00
|
|
|
UManager( std::shared_ptr<global::ThreadPool> ThreadPool );
|
|
|
|
~UManager();
|
2023-08-16 11:28:46 +02:00
|
|
|
|
|
|
|
void ValidateProcessThreads();
|
2023-08-17 10:45:50 +02:00
|
|
|
void ValidateProcessMemory();
|
|
|
|
void ValidateProcessModules();
|
2023-08-15 14:02:17 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|