45 lines
662 B
C++
45 lines
662 B
C++
#include "Driver.h"
|
|
|
|
#include "driver_func.h"
|
|
|
|
Driver* Driver::instance = nullptr;
|
|
auto Driver::fn_get_instance() -> Driver*
|
|
{
|
|
if (!instance) {
|
|
|
|
instance = new Driver;
|
|
driver_func::init();
|
|
}
|
|
|
|
return instance;
|
|
}
|
|
|
|
auto Driver::driver_install(PDWORD status) -> BOOL
|
|
{
|
|
if (!is_driver_load())
|
|
{
|
|
if (driver_func::kdmaper_load_driver(status))
|
|
{
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
auto Driver::is_driver_load() -> BOOL
|
|
{
|
|
NTSTATUS status = STATUS_UNSUCCESSFUL;
|
|
|
|
CMD_COMM data;
|
|
data.CommID = DRIVER_COOM_TYPE::DRIVER_COMM_TEST;
|
|
data.status = (DWORD64)&status;
|
|
|
|
driver_func::driver_comm_func(&data, sizeof(data));
|
|
|
|
return NT_SUCCESS(status);
|
|
}
|
|
|
|
|
|
|