阅读:2573回复:7
网卡驱动程序可以调用Iocreatedevice吗?
我想在应用层直接createfile然后用deviceiocontrol和驱动通信,
不知可行否? |
|
沙发#
发布于:2001-09-26 16:14
好象不可以!
调用IOCREATEDEVICE()。至少,我没见过这样的用法 |
|
板凳#
发布于:2001-09-26 18:04
我个人认为,任何kernel-driver,如果不是特别特别
特殊,都是可以iocreatedevice的。至于是否会因此 而带来一些后遗症,例如不能正确卸载之类的,那就 很难说了。 |
|
|
地板#
发布于:2001-10-11 19:26
用IoCreateDevice肯定不行。
不过在NDIS5.0版本以上可以用NdisMRegisterDevice() 创建一个Device. 而且可以用CreateFile方式控制。没问题, 不论是速度还是什么。我都做好了。 目前在Win98第二版和win2k, Window me都支持NDIS5.0这个函数 不过在NT4.0上不行,目前我正要做一个用在NT4.0上的真不爽啊! 我看别人一般不这样用,(猜的)一般好像是做两个sys,一个是网络的,一个是有控制Device的,这两个驱动之间通讯控制的。感觉这 样规范一些! |
|
|
地下室#
发布于:2001-10-12 18:02
你试过了?不行?
“ 用IoCreateDevice肯定不行 ”??? 这样用是否规范不说,问题是能不能这样用。 |
|
|
5楼#
发布于:2001-10-12 19:23
算我说的太肯定,我没有试过。
我是根据 Win2000DDK的Document 说的 NDIS drivers should never call IoCreateDevice or IoCreateSymbolicLink. Instead, if an NDIS driver must create a device object, it should call NdisMRegisterDevice. 还是好好考虑我的NT下的驱动如何解决这个问题吧! 那位老兄知道有没有可以将NT4.0的NDIS升级到5.0的软件包 那样也许就不用另写了。 赶着急用! |
|
|
6楼#
发布于:2001-10-13 09:20
俺做过试验,ndisdriver调用iocreatedevice毫无问题,
而且devioctl毫无问题。存在一个比较费劲的问题就是 卸载的消息无法得到,因此必须用个别的方法绕过去。 ddk说的是不应该,should not,是说这样不规范,但是 还是能用的。至于在什么地方调用,可以在driverentry, 也可以在ndisrequest的某个地方调用,这都是自己任意 决定的。 |
|
|
7楼#
发布于:2001-10-13 18:29
我看到DDK里面有个packet的例子,里面就有用IoCreateDevice。
|
|