阅读:1397回复:6
一个小疑问,懂的人很好得分哦[30分]
Passthru(XP 版)的 MPSend() 和 MPSendPackets() 有个差别,MPSendPackets() 后面有如下几句:
if( Status != NDIS_STATUS_PENDING ) { NdisMSendComplete( ADAPT_MINIPORT_HANDLE( pAdapt ), Packet, Status ); } 可 MPSend() 就没有。返回状态不是 NDIS_STATUS_PENDING 还调用 SendComplete 干吗?再说这个工作应该是 NDIS 的吧?!哪位高手能详细的讲一下区别和原因?谢谢! |
|
最新喜欢:chili |
沙发#
发布于:2002-12-09 16:30
MPSendPackets是发送一个packet数组里面所有的packet,每次发送的时候如果ndissend返回pending,你就只能在sendcomplete里面才能告诉协议层包发完了,可是释放了,如果ndissend返回的不是pending,你马上就可以告诉协议层,这个packet可是释放掉了,这时候你的MPSendPackets还没有返回,只能是调用这个函数告诉协议层去释放paxket。
我理解的是这个意思,讨论一下:) |
|
|
板凳#
发布于:2002-12-09 19:30
我理解的是这个意思 有道理有道理!而且我认为调用 NdisMSendComplete() 之后也可以通过第三个参数 Status 把当前发送的包的发送状态告诉上层协议。 |
|
地板#
发布于:2002-12-09 19:55
只要不是pending,协议层就可以释放或者重发了,怎么都可以
|
|
|
地下室#
发布于:2002-12-09 20:43
呵呵,谢谢 mikeluo!你又帮我搞清楚了一个疑问,俺对你的敬仰犹如滔滔江水,连绵不绝!谢谢!给分!
有你这样的好老师不怕搞不懂 IMD!:) |
|
5楼#
发布于:2002-12-09 20:49
又发达了,,谢谢先,呵呵
|
|
|
6楼#
发布于:2002-12-10 20:57
mikeluo,帮忙看一下我的这个问题:
“98下使用tdi时本地ip地址、端口问题 ” http://www.driverdevelop.com/forum/html_28950.html?1039524907 分不是很多,但是会者很容易拿。 急死我了。 多谢! |
|