阅读:1232回复:2
请问,这样接收数据对吗?(50分)
在ReceiveIndicate中自己想得到接受到的包的内容,代码如下,但是一运行就重启。
请教这是因为什么,谢谢。 NDIS_STATUS PacketReceiveIndicate ( IN NDIS_HANDLE ProtocolBindingContext, IN NDIS_HANDLE MacReceiveContext, IN PVOID HeaderBuffer, IN UINT HeaderBufferSize, IN PVOID LookAheadBuffer, IN UINT LookaheadBufferSize, IN UINT PacketSize ) { POPEN_INSTANCE open; PIO_STACK_LOCATION irpSp; PIRP irp; PLIST_ENTRY packetListEntry; PNDIS_PACKET pPacket; ULONG sizeToTransfer; NDIS_STATUS status; UINT bytesTransfered = 0; ULONG bufferLength; unsigned char pPacket_content[1524]; ARPSTRUCT *pARP ; DebugPrint(("--------->ReceiveIndicate<--------------")); if( PacketSize <= LookaheadBufferSize ) { // 这是一个完整的数据包,直接存储 bufferLength = HeaderBufferSize + PacketSize; if( bufferLength == 0 || bufferLength > sizeof( pPacket_content) ) { DebugPrint(( "The packet total length is invalid: %d", bufferLength )); return NDIS_STATUS_SUCCESS; } // 先拷贝头部数据 NdisMoveMemory( &pPacket_content[0], HeaderBuffer, HeaderBufferSize ); // 再拷贝剩余的数据 NdisMoveMemory( &pPacket_content[HeaderBufferSize], LookAheadBuffer, PacketSize ); pARP = (ARPSTRUCT*)pPacket_content; } // 以下为原来的内容 open= (POPEN_INSTANCE)ProtocolBindingContext; if (HeaderBufferSize > ETHERNET_HEADER_LENGTH) { return NDIS_STATUS_SUCCESS; 。。。 } 请问,这样接收数据报中的内容有什么问题呢? |
|
最新喜欢:![]()
|
沙发#
发布于:2004-07-26 11:32
我在这个函数里分析包也有问题,调用NdisQueryBufferSafe老出问题.
|
|
|
板凳#
发布于:2004-07-22 19:13
你使用SoftIce调试一下,看在什么地方错了先
|
|
|