xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1065回复:3

NT下开发驱动程序很简单的问题

楼主#
更多 发布于:2005-03-18 14:15
我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。

如果我按照2000中的写法,如下所述,会发生什么情况呢?
DriverObject->DriverExtension->AddDevice = AddDevice;
回答好的不要忘了给分哦。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-18 15:13
我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。

如果我按照2000中的写法,如下所述,会发生什么情况呢?
DriverObject->DriverExtension->AddDevice = AddDevice;

AddDevice是由PnP管理器来调用的,在NT中,由于没有PnP功能,设备的探测是需要自己实现的,一般在DriverEntry中实现,且得自己调用HAL中的函数保留和申请设备资源,即便设备是PnP的,也得需要自己去探测,然后AddDevice而win2000加入PnP功能,所以PnP会自动分配资源,因此AddDevice被大大简化了,只需要建立FDO,然后把它attach到设备堆栈顶层就可以了。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2005-03-19 09:58
[quote]我发现NT下的驱动程序DriverEntry中都没有给AddDevice函数指针赋值,但我看了一下他的DriverObject结构,发现有这个指针,不知道为什么,请大虾指点。

如果我按照2000中的写法,如下所述,会发生什么情况呢?
DriverObject->DriverExtension->AddDevice = AddDevice;

AddDevice是由PnP管理器来调用的,在NT中,由于没有PnP功能,设备的探测是需要自己实现的,一般在DriverEntry中实现,且得自己调用HAL中的函数保留和申请设备资源,即便设备是PnP的,也得需要自己去探测,然后AddDevice而win2000加入PnP功能,所以PnP会自动分配资源,因此AddDevice被大大简化了,只需要建立FDO,然后把它attach到设备堆栈顶层就可以了。 [/quote]
说的不错,不过你必须把驱动编译为WDM然后以INF的形式安装才能为PNP管理器识别,也就无法随心所欲的加载与卸载了.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-21 09:28
多谢两位大虾!
回答好的不要忘了给分哦。。。
游客

返回顶部