driver.h

来自「windows下的通用wdm驱动程序样本, 包含最常见的非PNP派遣函数和PNP」· C头文件 代码 · 共 55 行

H
55
字号
/************************************************************************
* 文件名称: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 + =
减小字号Ctrl + -
显示快捷键?