⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdmframe.h

📁 我自己写的WDM驱动程序工程生成向导
💻 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 + -