📄 wdmframe.h
字号:
#pragma once
extern "C"
{
#include <ntddk.h>
#include <ntdddisk.h>
#include <ntddcdrm.h>
#include <ntverp.h>
}
#ifdef _DEBUG
#define PRINT DbgPrint
#else
#define PRINT
#endif
extern void * __cdecl operator new(unsigned int cb);
extern void __cdecl operator delete(void *pUserData);
class IDeviceObject;
typedef NTSTATUS (IDeviceObject::*MAJORFUN)(PIRP Irp);
class IDeviceObject
{
public:
PDEVICE_OBJECT fdo;
PDEVICE_OBJECT ndo;
PDEVICE_OBJECT pdo;
char DeviceName[32];
MAJORFUN MajorFunc[IRP_MJ_MAXIMUM_FUNCTION];
IDeviceObject()
{
fdo=NULL;
ndo=NULL;
pdo=NULL;
strcpy(DeviceName, "IDeviceObject");
for(int i=0;i<IRP_MJ_MAXIMUM_FUNCTION;i++)
MajorFunc[i]=DefaultDispatch;
}
virtual ~IDeviceObject(){}
virtual NTSTATUS DefaultDispatch(PIRP Irp)
{
Irp->IoStatus.Information = 0;
Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_NOT_IMPLEMENTED;
}
};
class IDriverObject
{
public:
PDRIVER_OBJECT DriverObject;
PUNICODE_STRING RegistryPath;
virtual NTSTATUS DriverEntry()=0;
virtual NTSTATUS AddDevice(IN PDEVICE_OBJECT pdo)=0;
virtual VOID StartIo(IN PIRP Irp)=0;
virtual VOID Unload()=0;
};
extern IDriverObject *Driver;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -