changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1601回复:7

关于资源分配 迷惑:为什么在注册表中写入这样一句话,在StartDevice中就可以获得资源? [Art Baker书中的第九章的例子]

楼主#
更多 发布于:2005-06-01 19:29
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E978-E325-11CE-BFC1-08002BE10318}]
\"UpperFilters\"=\"MINPNP\"

在这个键值 Ports(COM & PLT) 下有两个设备 串口和打印口,

那么是什么 促使系统为这个驱动分配打印口资源 而不是分配com口资源呢? [迷惑]



完整的注册表信息是这样的:
REGEDIT4

[HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\MINPNP]
\"Start\"=dword:3
\"Type\"=dword:1
\"ErrorControl\"=dword:1
\"DisplayName\"=\"Chapter 9 Minimal PnP Driver\"

[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E978-E325-11CE-BFC1-08002BE10318}]
\"UpperFilters\"=\"MINPNP\"
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-03 12:43
UpperFilters=xxx: 是创建过滤驱动程序. 只要在这个class下的所有设备驱动都会受影响.
class下的驱动都会首先传给minipnp,minipnp在AddDevice()要判断当前过滤是什么设备.

另外所谓资源都是驱动程序自己主动申请的.
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-03 12:57
TO qinxg

如何理解 \"另外所谓资源都是驱动程序自己主动申请的.\"

我感觉好像资源是系统分配的, 驱动程序是被动接受的,

最迷惑不解的地方是在这个Class下有两个硬件设备:
COM & PLT, 那是怎么判断出要给这个UppterFilter驱动分配PLT资源呢, 真是奇怪?

KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
地板#
发布于:2005-06-04 08:20
 
如何理解 \"另外所谓资源都是驱动程序自己主动申请的.\"

我感觉好像资源是系统分配的, 驱动程序是被动接受的,
 


这是从inf里申请,系统分配,再被动接受的.

 
COM & PLT, 那是怎么判断出要给这个UppterFilter驱动分配PLT资源呢


用下面的
HKR,,PortSubClass,1,01     ; 00 = parallel  01 = serial 02 = modem

changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-06 09:35
To KMK:

这个例子程序只用了注册表文件[在楼上已经写出],
并没有用到INF文件,

还是没有明白为什么系统就知道给这个驱动分配
PLT资源呢, 奇怪?
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
5楼#
发布于:2005-06-06 12:27
 

To KMK:

这个例子程序只用了注册表文件[在楼上已经写出],
并没有用到INF文件,

还是没有明白为什么系统就知道给这个驱动分配
PLT资源呢, 奇怪?


 


我说的不是针对你的例子,祗是一般的看法而已.
你的例子中GUID是Ports Class,COM及LPT一起的,另它的例子除了文字说是Parallel Port Driver外,根本一点LPT味道都没有,连portBase是多少都没给,IRQ都没有(可能我的例子版本旧),也可能之前几章已在register已加上.
但象Ports Class Driver多一点
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-06 14:21
To KMK:

看来高手,也有同样的迷惑 :-)

我看过chap 9以前的所有例子reg 文件, 注册表的信息都是这样的,
唯一不同 chap 9 多了Class字段 在reg文件中,
没有其它什么针对LPT的设置, 真是奇怪啊!

谁能帮着分析一下呀!
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
7楼#
发布于:2005-06-06 15:03
这例子工作正常吗 ? 它的源码是不完整的,又我从不安装书上驱动.所以不知到.
这例子感觉是从parallel port interrupt抄来.

是一个Ports Class Upper Filter(不是parallel port filter)
游客

返回顶部