阅读:1635回复:4
有一个问题我该任何解决?
各位:有一个问题我该任何解决:
当我的PASSTHRU收到一个数据包,我该如何通知应用程序?难道是让应用程序不停的从PASSTHRU中读取数据吗(我现在就是用的这个方法)?还有没有其他更好的方法吗? |
|
沙发#
发布于:2002-01-01 15:34
各位:有一个问题我该任何解决: 你的应用程序总得要有一个时机去读driver的消息,或者系统来做, 通过事件唤醒线程(你可以用该方法,我在前面的贴子给出了 source)。 |
|
|
板凳#
发布于:2002-01-01 17:51
感谢huyg版主。
下面还有一个问题请教: 1).在例程ptReceivePacket中若返回一个非0值(如返回N),那么表示当上层调用NdisReturnPackets这个包N次后NDIS便会调用本层的MiniportReutrnPackets以表示本层获得了这个包的所有权。 2).DDK中关于函数NdisInidecatePackets的说明是,当某个包返回是NDIS_STATUS_PENDING时,本层便失去了这个包的所有权,当上层调用NdisReturnPackets时,本层实行MiniportReturnPackets时才又重新获得这个包的所有权。 问: 1。2)中上层调用NdisReturnPackets几次才会调用本层的MiniportReturnPackets呢? 2。若在1)的情况中发生2)的情况,即在例程ptReceivePacket中调用NdisIndicatePackets时,上层该调用几次NdisReturnPackets呢? 望huyg版主赐教! |
|
地板#
发布于:2002-01-03 12:02
感谢huyg版主。 我记不太清楚了,一般ptrecievepacket返回0,返回n的确意味 着imd失去了对packet的所有权,此情况发生于ip层(或者别的 协议层)的packet_pool或者buffer_pool分配紧张,返回了 ndis_resource,ip层需要共用这块内存。 若返回了非0,那么你需要调用同样次数的returnpacket。 |
|
|
地下室#
发布于:2002-01-04 08:41
首先感谢huyg版主
假如我在非ProtocolReceviePacket例程中调用NdisMIndicateReceivePacket函数,并且这个函数返回PENDING,那么我给调用几次NdisReturnPacket呢(因为是非ProtocolReceivePacket, 所以不好返回非0值)? |
|