您的位置:首页 > 其它

深度剖析WinPcap之(九)——数据包的发送过程(14)(完)

2010-06-23 10:56 267 查看
本文转自http://eslxf.blog.51cto.com/918801/223813



1.8.3.3 NPF_WaitEndOfBufferedWrite函数

函数等待NPF_BufferedWrite所有的发送执行完成,返回用户控制。

VOID NPF_WaitEndOfBufferedWrite(POPEN_INSTANCE Open)

{
UINT i;
NdisResetEvent(&Open->WriteEvent);
for(i=0;
Open->Multiple_Write_Counter > 0 && i < TRANSMIT_PACKETS;
i++
)
{
NdisWaitEvent(&Open->WriteEvent, 100);
NdisResetEvent(&Open->WriteEvent);
}
return;

}

其中TRANSMIT_PACKETS为发送缓冲池中最大的数据包数目,定义为256个。
Open->Multiple_Write_Counter表示挂起的待发数据包个数,其值在NPF_BufferedWrite函数种递增

InterlockedIncrement(&Open->Multiple_Write_Counter);

而在NPF_SendComplete函数中递减

InterlockedDecrement(&Open->Multiple_Write_Counter);

而在NPF_WaitEndOfBufferedWrite函数中只到Open->Multiple_Write_Counter为0时,将结束for循环,退出函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: