mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-04-19 13:42:55 +00:00
Add new and delete operator
This commit is contained in:
parent
466a0e845e
commit
81a2aff035
@ -1,6 +1,7 @@
|
||||
wdk_add_driver(driver
|
||||
main.cpp
|
||||
thread.cpp
|
||||
new.cpp
|
||||
)
|
||||
|
||||
cmake_path(NATIVE_PATH PROJECT_SOURCE_DIR NORMALIZE WINDOWS_PROJECT_DIR)
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include <ntddk.h>
|
||||
#include "std_include.hpp"
|
||||
#include "logging.hpp"
|
||||
#include "nt_ext.hpp"
|
||||
|
||||
#include "thread.hpp"
|
||||
|
||||
@ -14,7 +13,6 @@ void unload(PDRIVER_OBJECT /*DriverObject*/)
|
||||
extern "C" NTSTATUS DriverEntry(const PDRIVER_OBJECT DriverObject, PUNICODE_STRING /*RegistryPath*/)
|
||||
{
|
||||
DriverObject->DriverUnload = unload;
|
||||
|
||||
debug_log("Hello World\n");
|
||||
|
||||
volatile long i = 0;
|
||||
|
48
src/new.cpp
Normal file
48
src/new.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include "std_include.hpp"
|
||||
#include "new.hpp"
|
||||
|
||||
void* __cdecl operator new(const size_t size, const POOL_TYPE pool, const unsigned long tag)
|
||||
{
|
||||
return ExAllocatePoolWithTag(pool, size, tag);
|
||||
}
|
||||
|
||||
void* __cdecl operator new[](const size_t size, const POOL_TYPE pool, const unsigned long tag)
|
||||
{
|
||||
return ExAllocatePoolWithTag(pool, size, tag);
|
||||
}
|
||||
|
||||
void* __cdecl operator new(const size_t size)
|
||||
{
|
||||
return operator new(size, NonPagedPool);
|
||||
}
|
||||
|
||||
void* __cdecl operator new[](const size_t size)
|
||||
{
|
||||
return operator new[](size, NonPagedPool);
|
||||
}
|
||||
|
||||
// Placement new
|
||||
inline void* operator new(size_t, void* where)
|
||||
{
|
||||
return where;
|
||||
}
|
||||
|
||||
void __cdecl operator delete(void* ptr, size_t)
|
||||
{
|
||||
ExFreePool(ptr);
|
||||
}
|
||||
|
||||
void __cdecl operator delete(void* ptr)
|
||||
{
|
||||
ExFreePool(ptr);
|
||||
}
|
||||
|
||||
void __cdecl operator delete[](void* ptr, size_t)
|
||||
{
|
||||
ExFreePool(ptr);
|
||||
}
|
||||
|
||||
void __cdecl operator delete[](void* ptr)
|
||||
{
|
||||
ExFreePool(ptr);
|
||||
}
|
54
src/new.hpp
Normal file
54
src/new.hpp
Normal file
@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
|
||||
void* __cdecl operator new(size_t size, POOL_TYPE pool, unsigned long tag = 'momo');
|
||||
void* __cdecl operator new[](size_t size, POOL_TYPE pool, unsigned long tag = 'momo');
|
||||
void* __cdecl operator new(size_t size);
|
||||
void* __cdecl operator new[](size_t size);
|
||||
|
||||
inline void* operator new(size_t, void* where);
|
||||
|
||||
void __cdecl operator delete(void *ptr, size_t);
|
||||
void __cdecl operator delete(void *ptr);
|
||||
void __cdecl operator delete[](void *ptr, size_t);
|
||||
void __cdecl operator delete[](void *ptr);
|
||||
|
||||
// TEMPLATE CLASS remove_reference
|
||||
template<class _Ty>
|
||||
struct remove_reference
|
||||
{ // remove reference
|
||||
typedef _Ty type;
|
||||
};
|
||||
|
||||
template<class _Ty>
|
||||
struct remove_reference<_Ty&>
|
||||
{ // remove reference
|
||||
typedef _Ty type;
|
||||
};
|
||||
|
||||
template<class _Ty>
|
||||
struct remove_reference<_Ty&&>
|
||||
{ // remove rvalue reference
|
||||
typedef _Ty type;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
typename remove_reference<T>::type&& move(T&& arg)
|
||||
{
|
||||
return static_cast<typename remove_reference<T>::type&&>(arg);
|
||||
}
|
||||
|
||||
// TEMPLATE FUNCTION forward
|
||||
template<class _Ty> inline
|
||||
constexpr _Ty&& forward(
|
||||
typename remove_reference<_Ty>::type& _Arg)
|
||||
{ // forward an lvalue as either an lvalue or an rvalue
|
||||
return (static_cast<_Ty&&>(_Arg));
|
||||
}
|
||||
|
||||
template<class _Ty> inline
|
||||
constexpr _Ty&& forward(
|
||||
typename remove_reference<_Ty>::type&& _Arg)
|
||||
{ // forward an rvalue as an rvalue
|
||||
return (static_cast<_Ty&&>(_Arg));
|
||||
}
|
||||
|
5
src/std_include.hpp
Normal file
5
src/std_include.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include <ntddk.h>
|
||||
#include "nt_ext.hpp"
|
||||
#include "new.hpp"
|
@ -1,6 +1,5 @@
|
||||
#include "thread.hpp"
|
||||
#include <ntddk.h>
|
||||
#include "nt_ext.hpp"
|
||||
#include "std_include.hpp"
|
||||
|
||||
namespace thread
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user