阅读:1450回复:4
关于NPF的问题,一个bug,不知大家发现没有????
NPF中的NPF_BufferedWrite函数有bug,我编写了一个测试函数,调用packet.dll中的函数PacketSendPackets,结果在发送包的每个包大小较大时,例如1000字节,就会导致系统花屏,用si调试,系统运行一段时间后弹出页面错误,但是不知是错在哪儿了,那位大侠碰到过这样的事情?我现在都快被弄疯了
|
|
沙发#
发布于:2004-05-29 12:10
有没有忘了字节转换再发啊,我曾经忘了htons(),会使系统重启的
|
|
板凳#
发布于:2004-05-31 11:28
那个地方进行字节转换?
我检查过了,没有问题,我现在用SoftIce进去调试,现在是运行一段时间就报如下错误: Break due to Page fault(0Eh). Faulte=0000 我用WS命令看调用堆栈,将ndis的符号表也加载后,看到错误出在NdisMSyncQueryInformationComplete处,但是我不知道为什么? 现在的想法是:在NPF_BufferedWrite中有如下代码: // Call the MAC NdisSend( &Status, Open->AdapterHandle, pPacket); if (Status != NDIS_STATUS_PENDING) { // The send didn\'t pend so call the completion handler now NPF_SendComplete( Open, pPacket, Status ); } // Step to the next packet in the buffer (PCHAR)winpcap_hdr += winpcap_hdr->caplen + sizeof(struct sf_pkthdr); // Check if the end of the user buffer has been reached if( (PCHAR)winpcap_hdr >= EndOfUserBuff ) { IF_LOUD(DbgPrint(\"NPF_BufferedWrite: End of buffer.\\n\");) return (PCHAR)winpcap_hdr - UserBuff; } 是不是由于NPF_S |
|
地板#
发布于:2004-05-31 11:30
NPF_SendComplete函数还没有处理完,就是说释放MDL和Packet时,NPF_BufferedWrite函数已经返回,所以报访问一个已经不存在的页面错误?
大家帮忙看看啊 |
|
地下室#
发布于:2004-06-08 08:33
呵呵,问题已经解决了。是winpcap的一个bug哦。我已经将NPF的源码修改过了,现在运行良好,在将近10MB/S的情况下,系统CPU占用率在30%左右,呵呵,还不错
|
|