#include <ntddk.h>
void Unload(IN PDRIVER_OBJECT DriverObject);
#ifdef __cplusplus
extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);
#endif
//全局new操作符
void * __cdecl operator new (size_t size,POOL_TYPE PoolType=PagedPool)
{
return ExAllocatePool(PoolType,size);
}
//全局delete操作符
void __cdecl operator delete (void* pointer)
{
ExFreePool(pointer);
}
class Test
{
public:
//构造函数
Test(){DbgPrint("test构造函数执行中\n");}
//析构函数
~Test(){DbgPrint("~test析构函数执行中\n");}
//类中的new操作符
void * operator new (size_t size,POOL_TYPE PoolType=PagedPool)
{
return ExAllocatePool(PoolType,size);
}
//类中的delete操作符
void operator delete (void *pointer)
{
ExFreePool(pointer);
}
private:
char buffer[1024];
};
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
unsigned i;
DbgPrint("Hello from 1!\n");
DriverObject->DriverUnload =Unload;
#if DBG
_asm int 3
#endif
Test *p=new Test;
delete p;
p=new(NonPagedPool) Test;
delete p;
char *pBuffer=new(PagedPool) char[100];
delete []pBuffer;
pBuffer=new(NonPagedPool) char[100];
delete []pBuffer;
return STATUS_SUCCESS;
}
void Unload(IN PDRIVER_OBJECT DriverObject)
{
DbgPrint("Goodbye from 1!\n");
}
new和delete符重载
最新推荐文章于 2024-08-26 10:06:44 发布