wdmframe.h

来自「我自己写的WDM驱动程序工程生成向导」· C头文件 代码 · 共 65 行

H
65
字号
#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 + =
减小字号Ctrl + -
显示快捷键?