阅读:1686回复:7
关于资源分配 迷惑:为什么在注册表中写入这样一句话,在StartDevice中就可以获得资源? [Art Baker书中的第九章的例子]
[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\" |
|
沙发#
发布于:2005-06-03 12:43
UpperFilters=xxx: 是创建过滤驱动程序. 只要在这个class下的所有设备驱动都会受影响.
class下的驱动都会首先传给minipnp,minipnp在AddDevice()要判断当前过滤是什么设备. 另外所谓资源都是驱动程序自己主动申请的. |
|
板凳#
发布于:2005-06-03 12:57
TO qinxg
如何理解 \"另外所谓资源都是驱动程序自己主动申请的.\" 我感觉好像资源是系统分配的, 驱动程序是被动接受的, 最迷惑不解的地方是在这个Class下有两个硬件设备: COM & PLT, 那是怎么判断出要给这个UppterFilter驱动分配PLT资源呢, 真是奇怪? |
|
地板#
发布于:2005-06-04 08:20
如何理解 \"另外所谓资源都是驱动程序自己主动申请的.\" 这是从inf里申请,系统分配,再被动接受的. COM & PLT, 那是怎么判断出要给这个UppterFilter驱动分配PLT资源呢 用下面的 HKR,,PortSubClass,1,01 ; 00 = parallel 01 = serial 02 = modem |
|
地下室#
发布于:2005-06-06 09:35
To KMK:
这个例子程序只用了注册表文件[在楼上已经写出], 并没有用到INF文件, 还是没有明白为什么系统就知道给这个驱动分配 PLT资源呢, 奇怪? |
|
5楼#
发布于:2005-06-06 12:27
我说的不是针对你的例子,祗是一般的看法而已. 你的例子中GUID是Ports Class,COM及LPT一起的,另它的例子除了文字说是Parallel Port Driver外,根本一点LPT味道都没有,连portBase是多少都没给,IRQ都没有(可能我的例子版本旧),也可能之前几章已在register已加上. 但象Ports Class Driver多一点 |
|
6楼#
发布于:2005-06-06 14:21
To KMK:
看来高手,也有同样的迷惑 :-) 我看过chap 9以前的所有例子reg 文件, 注册表的信息都是这样的, 唯一不同 chap 9 多了Class字段 在reg文件中, 没有其它什么针对LPT的设置, 真是奇怪啊! 谁能帮着分析一下呀! |
|
7楼#
发布于:2005-06-06 15:03
这例子工作正常吗 ? 它的源码是不完整的,又我从不安装书上驱动.所以不知到.
这例子感觉是从parallel port interrupt抄来. 是一个Ports Class Upper Filter(不是parallel port filter) |
|