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

📄 driver.h

📁 windows下的通用wdm驱动程序样本, 包含最常见的非PNP派遣函数和PNP派遣函数. 更复杂的驱动程序可以在这个版本上进行扩展.
💻 H
字号:
/************************************************************************
* 文件名称:Driver.h                                                 
* 作    者:张帆
* 完成日期:2007-11-1
*************************************************************************/
#pragma once

#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h>
#ifdef __cplusplus
}
#endif 

#define PAGEDCODE code_seg("PAGE")
#define LOCKEDCODE code_seg()
#define INITCODE code_seg("INIT")

#define PAGEDDATA data_seg("PAGE")
#define LOCKEDDATA data_seg()
#define INITDATA data_seg("INIT")

#define arraysize(p) (sizeof(p)/sizeof((p)[0]))

typedef struct _DEVICE_EXTENSION {
	PDEVICE_OBJECT fdo;
	PDEVICE_OBJECT NextStackDevice;
	UNICODE_STRING ustrDeviceName;	//设备名称
	UNICODE_STRING ustrSymLinkName;	//符号链接名

	KDPC pollingDPC;	// 存储DPC对象
	KTIMER pollingTimer;// 存储计时器对象
	PIRP currentPendingIRP;//记录当前挂起的IRP
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

// 函数声明

VOID HelloWDMUnload (IN PDRIVER_OBJECT pDriverObject);
NTSTATUS HelloWDMAddDevice(IN PDRIVER_OBJECT DriverObject,
                           IN PDEVICE_OBJECT PhysicalDeviceObject);

NTSTATUS HelloWDMDispatchAny(IN PDEVICE_OBJECT fido, IN PIRP Irp);

NTSTATUS HelloWDMPower(IN PDEVICE_OBJECT fdo,
							   IN PIRP Irp);
NTSTATUS HandleQueryPower( IN PDEVICE_EXTENSION pdx, IN PIRP Irp);
NTSTATUS HandleSetPower( IN PDEVICE_EXTENSION pdx, IN PIRP Irp);
NTSTATUS HandleWaitWake( IN PDEVICE_EXTENSION pdx, IN PIRP Irp);
NTSTATUS HandlePowerSeq( IN PDEVICE_EXTENSION pdx, IN PIRP Irp);

NTSTATUS DefaultPnpHandler(PDEVICE_EXTENSION pdx, PIRP Irp);
NTSTATUS HelloWDMPnp(IN PDEVICE_OBJECT fdo,
                        IN PIRP Irp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -