阅读:1755回复:4
关于NdisTransferData的问题
大家好:
请教一个问题, 本人在Windows 2000下面, 写类似PASSTHRU程序时遇到如下问题: 在ProtocolReceiveHandler函数中, 当我用NdisTransferData去拿LookAheadBuffer后面的数据时, 我重新分配了NDIS_PACKET和NDIS_BUFFER, 调用NdisTransferData之后, 正确地拿到数据,此时, 我再把NDIS_PACKET中的数据用NdisMoveMappedMemory拷贝到NDIS_LOOKAHEAD_PACKET后面, 当然也把NDIS_LOOKAHEAD_PACKET数据的长度作了调整. 再就是用NdisMIndicateReceivePacket把NDIS_LOOKAHEAD_PACKET转送给上层. 我可以Ping到其它的计算机, 但连接Internet时, 则在中文网站会出现乱码. 另外, 我还发现, 如果PacketSize等于LookAheadBufferSize时, 也即不调用NdisTransferData, 则一切正常! 因此, 问题出现在拿LookAheadBuffer后面的数据中. 请问, 在调用NdisTransferData应该注意那些事项? 另外, 在分配NDIS_PACKET时那些XXXReserved Field应该怎样初始化? 那位高手能否给出这段的Sample code. 谢谢! [编辑 - 8/20/02 by LinX] |
|
沙发#
发布于:2002-08-21 09:34
NdisTransferData函数返回的状太中,可能是ndis_status_pending,则说明这个请求被异步处理了,在这个时候,当NDIS传输完数据以后会调用你的的协议的TRANSCOMPLETE函数,这个时候才能认为NDIS为你COPY了完整数据。。。。
我猜想是否是因为你没有检查这个函数的返回值就认为传输完毕了,所以出现乱码??? LookaheadBufferSize == packetsize的时候说明你拿到的数据就是全部的包,不经过这个过程,当然不会有错了, 个人看法,参考参考:) |
|
|
板凳#
发布于:2002-08-21 09:52
当然检查了返回状态. 我说的是在浏览中文网站时, 则会出现乱码!
另外说一下, 我在NT下正常, 在2K中会出现问题. |
|
地板#
发布于:2002-08-21 10:02
当然检查了返回状态. 我说的是在浏览中文网站时, 则会出现乱码! 你的nt,2000下应该用的不是同一套代码吧? |
|
|
地下室#
发布于:2002-08-21 10:15
NdisTransferData这段Code是一样的.
|
|