阅读:1515回复:12
急向大侠们求助。(答对给分)
各位大侠:
我已编写了个USB设备驱动。但老板要求实现不插设备的时候系统即能认出设备。我确实看到有人实现了这个功能。他好象编写了两个驱动软件。一个是设备的驱动,另一个是用来模拟USB设备的。在安装完设备后,系统即发现了新设备(还没插入设备)。 我猜是在设备驱动下面编写了个filter驱动,把设备驱动发下来的一些信息直接处理返回?但我还是想不同:在不插入设备的时候系统如何认出设备? 谢谢! |
|
最新喜欢:![]() |
沙发#
发布于:2003-12-02 13:21
你可以创建一个虚拟的设备,来模拟实现基本功能,只要有DEVICEOBJECT,系统才不管你的真假。。。。。。
|
|
|
板凳#
发布于:2003-12-17 14:37
还有几点疑问:
1)是不是另外写一个驱动程序来实现这个功能?是的话,如何实现两个驱动程序的通信?怎么往INF文件里加内容? 2)创建一个虚拟的设备,来模拟实现基本功能----是不是用iocreatedevice? 3)还是用VXD方法写? 最好给我个例子看看。由于很急,没太多时间试了。 叩谢!!! [编辑 - 12/17/03 by mycookie] |
|
论坛版主
![]() |
地板#
发布于:2003-12-17 19:26
无硬件的驱动确实可以工作,这个没问题,但不知道你说的方案是否是好的,是否要做成两个?做成两个后是否要通讯?有硬件的时候上层的请求到底发给谁?
对于虚拟的设备,可以在ADDDEVICE里面用IOCREATEDEVICE创建,对于PNP的IRP_MN_XXX也不需要过多的有回应,简单的发到下面去就好,我试过的很多都不需要专门处理,系统还是会认可你创建的设备,至于这个设备的PDO(就是ADDDEVICE的参数)是根据什么创建的我也没研究出来,根据DDK的说明,要BUS ENUMERATE和ADD NEW DEVICE的时候由PNP MANAGER创建,但虚拟设备的PDO确实存在,我也看过,确实是PNP MANAGER创建的,但不知道是为什么创建的,工作是没问题,你可以用它实现任何功能,虚拟USB没问题 INF没有特殊要求 |
|
地下室#
发布于:2003-12-22 11:16
还有点疑问:
设备驱动怎么辨认出虚拟设备的驱动是我的设备? |
|
5楼#
发布于:2003-12-22 11:55
usb的驱动发irp到虚拟设备驱动。
你给虚拟设备驱动绑定一个GUID,然后你的usb驱动就能发到虚拟设备驱动了。 |
|
6楼#
发布于:2003-12-22 13:27
创建虚拟设备的时候,iocreatedevice里的参数是否要注意什么?
比如说devicetype 或devicename DeviceCharacteristics 是否要设置为FILE_VIRTUAL_VOLUME ? 是不是把所有的IRP都发送个虚拟设备的驱动?还是发些特定的IRP 给它?把IRP 发给其他的驱动程序是不是用DEVICECONTROL? 急呀! 谢谢大家的关注! [编辑 - 12/22/03 by mycookie] |
|
7楼#
发布于:2003-12-22 15:17
那位高手能把联系方式留给我。
我愿意付咨询费。谢谢!很急了! 我的联系方式为william_xixi@yahoo.com.cn |
|
论坛版主
![]() |
8楼#
发布于:2003-12-22 16:22
哈哈,你娃是不是天天遭老板请起去背书,哈哈哈
IoCreateDevice( pDriverObject, sizeof(DEVICE_EXTENSION), &(UNICODE_STRING)devName, FILE_DEVICE_XXX, 0, FALSE, &pfdo ); 第四个参数自己定义,按WIN的来,给你一个可以用的把 #define FILE_DEVICE_XXX 65535 IRP发给谁是由你定义的IO控制代码判断的,IO控制代码用宏定义 #define IOCTL_XXX_READ \\ CTL_CODE(FILE_DEVICE_XXX ,2048,METHOD_BUFFERED,FILE_ANY_ACCESS) 看到它和设备怎么联系没有?不用说了吧 |
|
9楼#
发布于:2003-12-23 16:45
大哥们:我如果能有时间琢磨,就不会在这里发贴子了。我现在连看DDK的时间都没有了。一大堆事呢!还有点关键问题:在安装的时候怎么让系统认为我虚拟设备的驱动程序是个硬件呢?是否在调用iocreatedevice时候,用自己定义的FILE_DEVICE_XXX参数即可?安装就用FASTINSTALL安装后系统即会认为是新硬件
谢谢!!! |
|
论坛版主
![]() |
10楼#
发布于:2003-12-23 20:37
没问题,照着做,没得问题得,在INF里面再选个图标(就是网卡用那个)就象了三:),注意自己创建一个CLASSGUID。
|
|
11楼#
发布于:2003-12-26 15:44
楼上的大哥:
好像可以。但我自己建立的IRP为什么发不到我的虚拟设备驱动中? 这个irp中存放了我要发送到设备的数据。我用IoBuildAsynchronousFsdRequest或用IoBuildDeviceIoControlRequest都不行呀 急呀!!!!!谢谢关注这个贴子的各位高手! |
|
12楼#
发布于:2003-12-29 21:28
感谢wxl_50685330:
你的提示还是对我有很大帮助的,分已送给你了。我会再开个贴子,多送你些分!谢谢! |
|