阅读:1707回复:5
关于查找设备驱动程序的问题,送50分
在windows有些设备一连上之后,不能装驱动,就能使用。在设备管理中查看该设备的驱动程序时,“驱动程序详情....“变为无效,但“卸载”和“更新驱动程序....”可以使用,这是为什么?
是不是系统内核已经带有驱动程序,我在%systemroot%\\system32\\drivers下找这种设备的驱动程序没有找到,这是为什么? 我想通过DeviceIoControl()控制这种设备,但是用winobj找不到这种设备的驱动名,这是为什么? 各位大侠帮帮我,我很急!! |
|
沙发#
发布于:2003-12-01 14:25
谢谢楼上,我现在已经基本搞定了。
我开始放分了! :D |
|
板凳#
发布于:2003-12-01 09:46
首先说明一点SCSI(n)这种符号连接指向的是SCSI适配器设备对象,如果你要和SCSI的LU进行通信是不能用这个符号连接的,你可以用以下几个方法:1、自己创建符号连接,你已经有了相关的port、path、target以及lun的id,正常情况下changer设备的所对应的设备对象名称会是\\Device\\Scsi\\XXXPort(x)Path(x)Target(x)Lun(x),你就是要和他通信,如果你写的是驱动,你可以在内核通过IoGetDeviceObjectPointer直接打开这个设备对象,如果你写的是用户态程序,你可以调用DefineDosDevice自己创建指向该设备的符号连接(自己查msdn),然后CreateFile就可以打开了;2、正常情况下符号连接应该一经有了,名称应该是\\??\\SCSI#Changer&Ven_xxx&Prod_xxx&Rev_xxx&实例id,你可以用WindObj找一找
|
|
地板#
发布于:2003-11-28 14:03
既然已经知道SCSI port值就可以使用“\\\\\\\\SCSI(n):”这个符号链接与这个设备通信了。
|
|
地下室#
发布于:2003-11-28 13:50
对,我现在的问题就是我有一个changer 的设备,装上去之后,系统能够认出这个设备,没有给我打上“?”。而且在MSDN里有如何调用changer设备的IOCTL 的说明,我现在想通过IOCTL调用它,但是我找不到changer这个设备对象的符号连接。我应该怎么办呢?
但是我可以找到changer这个SCSI设备的SCSI port,id,lun. 楼上高手,能告诉怎么办吗? |
|
5楼#
发布于:2003-11-28 01:16
windows本身自带了许多的设备驱动,在winnt\\inf目录下存放着系统的驱动信息库,其中的inf文件包含了不同设备的厂商信息和驱动的相关信息。如果你插入pnp硬件设备,会引起系统扫描该信息库,如果找到适合该设备的驱动信息(inf内容见ddk),操作系统就直接加载驱动,如果没有会触发用户态的pnp服务启动设备安装过程(这就是插入没有驱动的pnp设备就会谈出添加设备对话框的原因),当然如果设备不支持pnp,你要手动开始添加设备。
winobj看不到设备的驱动名:如果你要看已加载的driver,你可以看winobj中\\drivers目录下的driver对象,其实你要想和它通信,应关注你要通信的device对象的符号连接或者设备接口 |
|