WDM式驱动的基本结构


1.对于WDM驱动程序来说,一般都是基于分层。也就是说,完成一个设备操作,至少要由两个驱动设备共同完成一个是物理设备对象(Physical Device Object)PDO,另一个是功能设备对象(Function Device Object)FDO。关系是附加与被附加的关系。当PC插入某个设备的时,PDO会自动创建。确切的说,是由总线驱动创建的。PDO不能单独操作设备,需要配合FDO一起使用。系统会提示检查到新设备,需要安装配合FDO一起使用。系统会提示检测到新设备,要求安装驱动程序。需要安装的驱动程序指的就是WDM程序,此驱动程序创建FDO,并附加到PDO之上。

以下是WDM代码框架


#include <wdm.h>
NTSTATUS MyWDMAddDevice(PDRIVER_OBJECT pDriverObj,
						PDEVICE_OBJECT pPhysicalDevObj);
void MyUnLoad(PDRIVER_OBJECT pDriverObj);
typedef struct _DEVICE_EXTENSION
{
	PDEVICE_OBJECT  fdo;
	PDEVICE_OBJECT  pNextDo;
	UNICODE_STRING  ustrDevName;//name of DO
	UNICODE_STRING  ustrLinkName;//name of linkSymbol
}DEVICE_EXTENSION,*PDEVICE_EXTENSION;
/*
1.增加了AddDevice函数的设置,这是WDM和NT的不同点
2.因为NT是主动加载设备的,也就是驱动一旦加载就创建设备
而WDM驱动是被动加载驱动
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值