阅读:1325回复:6
还有几个问题!
现在有点钱了,看我放多少分,都是专家分呐。
1、我的驱动是将用户的数据写入缓存,然后通过消息触发应用层将它读走通过IOCTL,应用层通过socket发到网络中。然后从网络中读到数据写入驱动读缓存中通过IOCTL,用户什么时候读我就不管了。 问题是: 这样一个正常的顺序,在高速读写时会出现混乱,驱动会一次写很多数据到缓冲中,然后又一起读出,很可能是写了6个包进出,一下又出来6个包,事件的触发也不是次次响应。有办法让驱动一步步的按顺序做吗? 2、在2k下很好用的驱动到98下安装后,打不开设备。有什么办法吗? 多谢各位帮忙的高手了。 |
|
|
沙发#
发布于:2002-08-23 17:17
要一次一次发送,将IRP排对就可以吧.
2000的驱动在98下不好用,很正常. |
|
|
板凳#
发布于:2002-08-23 17:24
要一次一次发送,将IRP排对就可以吧. 怎么排队?我是将数据写入了缓冲,通过队列的方法读出、写入。 我的程序是用来模拟串口的。 |
|
|
地板#
发布于:2002-08-23 17:29
[quote]要一次一次发送,将IRP排对就可以吧. 怎么排队?我是将数据写入了缓冲,通过队列的方法读出、写入。 我的程序是用来模拟串口的。 [/quote] 关键在与读写数据时如何同步,否则数据会混乱的。 另外,上层反应是否够快,否则丢数据 |
|
地下室#
发布于:2002-08-23 17:40
在上层创建高级别的读写线程(31);
|
|
5楼#
发布于:2002-10-08 12:46
从你的两个贴子来看,你可能想虚拟一个串口,目的是将用户写向串口的数据通过TCP/IP发向网络,由于在驱动程序中不能使用SOCKET所以想了一个驱动和应用相结合的办法来实现。
不知道我说的对不对。 如果对的话,你的这个办法也太差了。 其实在内核层也完全可以使用TCP/IP的,使用TD Client,甚至可以做得象socket 一样。我已经做了一份相对简单的,有兴趣可以留一个email。 虚拟串口在win98 和 NT/2K是不一样的。 |
|
|
6楼#
发布于:2002-10-08 13:15
从你的两个贴子来看,你可能想虚拟一个串口,目的是将用户写向串口的数据通过TCP/IP发向网络,由于在驱动程序中不能使用SOCKET所以想了一个驱动和应用相结合的办法来实现。 要是能介绍,介绍就太好了。 beaveror@sina.com. :D :D :D |
|
|