阅读:1710回复:8
中间层驱动怎么跟应用程序交互?
我试图IoCreateDevice建个专门用于控制的设备,可是驱动总是在卸载的时候死机。哪位大侠有过这方面的经验?谢谢
|
|
最新喜欢:girlsc... |
沙发#
发布于:2002-10-04 21:17
如果是NDIS中间层的驱动的话,DDK建议最好使用注册设备接口的方法,好像是REGISERDEVICEINTERFACE(),这样就可以被其他的驱动所调用,其实本站里就有一个PASSTHROU里注册设备的SOURCE CODE,你可以找一找。
但用IOCREATEDEVICE()的方法我觉得也可以,是不是一些标志为没有设置?譬如说IO方式? |
|
板凳#
发布于:2002-10-04 21:23
我就是不知道怎么设置才来问的啊,大哥给个详细说明吧
我只是在DriverEntry里,用IoCreateDevice建了一个设备,其他的什么也没做。然后卸载驱动的时候就死机,十多次了。 |
|
地板#
发布于:2002-10-04 21:39
如果是NDIS中间层的驱动的话,DDK建议最好使用注册设备接口的方法,好像是REGISERDEVICEINTERFACE(),这样就可以被其他的驱动所调用,其实本站里就有一个PASSTHROU里注册设备的SOURCE CODE,你可以找一找。 用iocreatedevice是可以。 以前我就是这么干的,除了unload的时候需要reboot之外 没有什么问题。 当时我没有用到什么特别的地方,因为那个时候我没有注意到 需要用registerdevice。我没有多想就调用iocreatedevice。 |
|
|
地下室#
发布于:2002-10-04 21:59
用iocreatedevice是可以。 对啊,我就是在卸载驱动的时候死机重起。怎么解决啊? |
|
5楼#
发布于:2002-10-05 11:54
我试图IoCreateDevice建个专门用于控制的设备,可是驱动总是在卸载的时候死机。哪位大侠有过这方面的经验?谢谢 可以看看XP的passthru,觉得里面的东东改装一下就可以用了,我就是这么干的。 |
|
6楼#
发布于:2002-10-05 17:04
呵呵!XP的PASSTHRU里面有一个函数2K好象是不支持的啊!还有就是,如果在PASSTHRU的driverentry里面使用iocreatedevice好象是有问题的啊!并且卸载好象也不是那样卸载的啊!
|
|
7楼#
发布于:2002-10-05 19:12
呵呵!XP的PASSTHRU里面有一个函数2K好象是不支持的啊!还有就是,如果在PASSTHRU的driverentry里面使用iocreatedevice好象是有问题的啊!并且卸载好象也不是那样卸载的啊! 前面那哥们死机是他的代码的问题,和ioCreateDevice无关。 我以前这么用过,除了unload并不真正卸出内存之外,并没有 其他的问题。 passthru的driverentry里面可以用iocreatedevie。 关于passthru for xp在2k下的使用,需要注意如下问题: 1、注意看source,用正确的预定义 2、如果只需要在2k sp2以上安装就无所谓,2k不支持copyinf, 但是也不要使用2k的passthru的inf,虽然是可以装,但是有bug, 这是系统的bug,sdk里面的一个oemxxxx函数在search inf的 时候有问题,但是passthru for 2k的完全sample没有这个问题, 因为那个dll解决了这个问题,但是inf文件中的关于如何不使用 notify dll的说法是错误的。 关于passthru for xp在9x下的使用,需要注意如下问题: 1、注意那些9x不支持的函数,那个sample好像没有注释彻底。 2、注意unicode的问题,但是大多数情况下你并不需要考虑, 需要考虑的地方好像就只有一个,似乎在bindadapter。 3、你不可能用这段代码支持拨号网卡,你也许能够绑定, 但是你拨号不会成功。你需要把自己伪装成为ip协议,而不是 passthru协议(你需要在给pppmac发setinformation)。 4、你需要学习16 bit dll,以便写一个安装dll,那是一个 艰苦的工作,MS已经不打算支持了,你只有靠自己。 有的时候发现老外写的程序经常有些莫名其妙的BUG,我刚刚 下载了一个CIPE玩玩,就发现那个虚拟网卡的UNLOAD处理有 BUG,IRP无法正确CANCEL,结果我的系统就过了5分钟之后 死机。 |
|
|
8楼#
发布于:2002-10-06 01:03
可是我发现在driverentry里面iocreatedevice了设备之后,把irp_mj_xxx的处理函数表替掉了是没有用的!在passthru的binD会被替掉的啊!
|
|