wuyingwsj
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1099回复:4

第一次动手写driver的一点问题。

楼主#
更多 发布于:2004-12-13 17:16
  初学驱动开发,看了两本书了,现在想把以前在用户模下实现在一些东西放到内核里来。以前写过一个智能仪表的程序,硬件主要是PC104+几个亚当模块和传感器。主机和模块是通过485总线联接,以前都是通过用createfile,readfile,writefile,读写串口实现的,现在我想把对模块的读写部分从应用程序独立出来放到内核里去,这样的功能应该用WDM实现吗?我总觉得WDM是PnP的一种,而这个设备不是那种技持PnP的,我是不是可以完全忽略对PnP的处理,一WDM对非PnP设备到底怎样处理的?特别是没有PnP支持的时候统系怎么把物理设备和driver联系起来的?

[编辑 -  12/13/04 by  wuyingwsj]
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-13 17:27
WDM驱动是PNP驱动的一种,WDM必须处理PNP例程和POWER例程。
在交流中学习。。。
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-13 17:31
    写WDM和其它模式驱动程序基本上是相同的,代码中的主要区别在于如何创建设备。在WDM驱动程序中,即插即用(PnP)管理器告知何时向系统添加一个设备,或者从系统删除设备。PnP管理器使用安装的INF文件查找新设备的正确驱动程序;而其它模式驱动程序必须发现它自己的设备,使用专门的安装程序安装。
    另外在细节上也存在很多区别,其它模式驱动程序参数一般由注册表提供,在DriverEntry里调用读注册表的函数,然后根据注册表再调用CreateDevice,但是WDM一般不是这样,这是由于Windows 2000下支持PnP,在加载的时候会发PnP消息给Driver,所以一般不需要在DriverEntry里调用CreateDevice,而是在AddDevice里创建,或者在PnP消息里创建。一般在DriverEntry里创建的是一个与设备或者对象毫无关系的虚拟设备,用于管理与Win32的通讯。如果不想对该设备做什么特别的处理,或者设备不复杂,AddDevice可以简单返回Nt_Success,不用调用CreateDevice。另外整个设备驱动树也发生了改变,从而使安装程序发生了很大的改变。
在交流中学习。。。
wuyingwsj
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-13 20:15
WDM驱动是PNP驱动的一种,WDM必须处理PNP例程和POWER例程。

  fslife谢谢你回答.
  别外PnP管理器应该是在设备上电的时候向驱动程序发送PnP消息吧。对于非PnP设备我想PnP管理器应该不能及时识别设备是连接上主机吧,那他怎么能管理这种非PnP设备呢?
wuyingwsj
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-13 20:21
我一在想知道几个问题:
1、WDM能不能支持这种不支持PNP的设备,我好想记得是支持的。
2、如果支持PnP管理器是怎么发现这个设备并把设备和驱动程序联接起来的,是通过配置文件和注册表吗?

[编辑 -  12/13/04 by  wuyingwsj]
游客

返回顶部