阅读:1350回复:6
初学者的问题
最近开始学WDM驱动程序编程,有很多基本概念(或工作过程)不太清楚。感到很难继续往下学,手头上的参考书对这方面都很少说明(也许是我太笨了,这种问题根本不用说明),只好在这里请教各位大侠了。
1.WDM支持PnP,也就是说当一个外设插到电脑端口上时,电脑会检查到并利用*.inf寻找对应的驱动程序.那么是不是说要想实现PnP,实际上,WDM对外设是有要求的,即要求它上电后能够与WDM下的底层(与硬件打交道)的驱动程序进行通讯,提供*.inf的名称以供系统查找? 2.如果上述猜测对的话,那么如果插入的是一个不具备上述功能的外设的话,是不是就必须通过手工方式启动添加外设? 3.如果2是对的话,那么每次插入外设是不是都需要重新添加呢?能否自动启动呢? 4.在使用RS232时,可以通过指定COM1,COM2来指定具体端口。那么,如果是使用USB,对于3.的情形系统怎么能知道你要用的是两个(或四个)端口中的哪一个呢? 对不起,提的问题很多,各位大虾又很忙,如果没时间具体回答,告诉一下是或不是也可。 谢谢。 |
|
沙发#
发布于:2003-07-16 13:03
1、2、3看不懂你说的是什么,但你要明白,如果一个硬件要实现pnp,它必须符合pnp的要求。比如PCI设备,就有PCI的spec来定义了如何实现pnp,如果你的硬件不符合这个spec,没有办法搞定。
4. CreateFile的第一个参数 |
|
|
板凳#
发布于:2003-07-17 08:20
谢谢回复。
对于1,2,3的问题,您回答了一半。我的另一半的意思是说如果插上了一个不满足PnP的外部设备(或硬件),是根本无法使用(也就是说WDM对外部设备或硬件的接口约定是有要求的)呢还是每次都要手工安装驱动程序,从您的回复来看似忽是WDM对外部设备或硬件的接口约定是有要求的。就是说在设计外部设备或硬件的接口时需要用某种方法让Windows知道并告诉windows系统它的*.inf文件的名字了。不知理解的对不。 对于问题4。也许是我对USB还不懂,所以问得外行了。我想问的是,对于RS232,明确规定了COM1,COM2,用CreateFile()可以明确指定使用哪一个,但USB外部表现也是两个或四个端口,却没有明确指定......。喔,是不是说,USB在内部只有一个地址呢? 谢谢。 |
|
地板#
发布于:2003-07-17 09:29
1> 1,2,3的问题,对于一个PNP设备,当插入系统时,WINDOWS会
通过读写该设备的某些存储区域或register(由协议规定)而知 道该设备的VendorID和ProductID,Windows正是根据这两个参数 去搜索inf文件的,如果搜索不到,Windows会让用户来指定。 对于一个非PNP的设备,需要手工安装驱动程序。 2> 4的问题:这个取决于你的DRIVER的设计啊,比如你有四个 PIPE,你可以指定PIPE0,PIPE1,PIPE2,PIPE3,然后你可以 像打开COM1,COM2一样打开这些PIPE,前提是你的DRIVER中 createdevice时做过相应的Symbolic Link,如果没有,你得在前面 自己加上你的device的registry路径 |
|
地下室#
发布于:2003-07-17 10:53
谢谢指教。明白了不少。
但对于“前提是你的DRIVER中createdevice时做过相应的Symbolic Link”是不是指在createdevice时要指定具体的物理地址(或与其相关联的设备名)呢?(也就是说在这种情况下,只能使用某一固定端口)。比如COM1,COM2都是与具体的物理地址相关联的。 |
|
5楼#
发布于:2003-07-17 13:17
不是物理地址,是将一个符号名称与一个device object联系起来,
这样,当你做过symbolic link后,你再使用createfile打开一个 符号名称时,操作系统就知道你要打开的是某个关联的设备对象, 这个设备对象本身携带的信息表明了它是什么设备,比如USB或 串口,以及该设备对象的其它相关信息,比如I/O地址等 |
|
6楼#
发布于:2003-07-17 14:37
非常感谢。大体上明白了。
|
|