阅读:1512回复:9
PRSVD的作用?
下面是斑竹以前发的帖子里,我对里面的“Resvd =(PRSVD)(MyPacket->MiniportReserved);Resvd->OriginalPkt = NULL;”代码的意思不了解,希望大虾指点一下!
{ Status = NdisAllocateMemory( &pPacketContent, 2000, 0, HighestAcceptableAddress); if (Status != NDIS_STATUS_SUCCESS ) { DbgPrint(\"ptreceive :ndisallocatememory failed\\n\"); return NDIS_STATUS_NOT_ACCEPTED ; } if(pPacketContent == NULL) { DbgPrint(\"prreceive:pPacketContent == NULL\\n\"); return NDIS_STATUS_NOT_ACCEPTED ; } RtlZeroMemory(pPacketContent, 2000 ); RtlCopyMemory(pPacketContent,HeaderBuffer,HeaderBufferSize); RtlCopyMemory(pPacketContent+HeaderBufferSize,LookAheadBuffer,LookAheadBufferSize); PacketLen = PacketSize+HeaderBufferSize; // DbgPrint(\"Packet Size=%d\\n\",PacketLen); result = RecvProcess( pAdapt,pPacketContent,&PacketLen); if( result == PACKET_REFUSE ) { DbgPrint(\"ptreceive :packet_refuse\\n\"); NdisFreeMemory(pPacketContent,2000,0); return NDIS_STATUS_NOT_ACCEPTED; } NdisDprAllocatePacket(&Status, &MyPacket, pAdapt->RecvPacketPoolHandle); if(Status == NDIS_STATUS_SUCCESS) { NdisAllocateBuffer(&Status,&PacketBuffer,pAdapt->RecvBufferPoolHandle,pPacketContent,PacketLen); NdisChainBufferAtFront( MyPacket, PacketBuffer ); MyPacket->Private.Head->Next=NULL; MyPacket->Private.Tail=NULL; Resvd =(PRSVD)(MyPacket->MiniportReserved); Resvd->OriginalPkt = NULL; NDIS_SET_PACKET_HEADER_SIZE( MyPacket, HeaderBufferSize ); NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1); // 这个函数调用之后ndis就只能调用protocol的ptrecievepacket了。 if ( NDIS_GET_PACKET_STATUS( MyPacket ) != NDIS_STATUS_PENDING ) { NdisFreeBuffer(PacketBuffer); NdisFreeMemory(pPacketContent,2000,0); NdisDprFreePacket(MyPacket); } break; } |
|
沙发#
发布于:2003-10-14 21:34
怎么浏览后直接发表文章,问题分数为0分?一定要退回去才能有分数吗?
|
|
板凳#
发布于:2003-10-15 09:09
那里面保存的是:你原来包的信息。/或者为空
仔细看看PACKET结构。的MINIPORTRESERVED和PROTOCOLRESERVED的作用 |
|
|
地板#
发布于:2003-10-15 14:18
那里面保存的是:你原来包的信息。/或者为空 老大在哪里能看到PACKET的结构和其中的MINIPORTRESERVED和PROTOCOLRESERVED,我在ddk,passthru都找了,没有啊? 我好长时间就想看PACHKET的结构了,谢谢! |
|
地下室#
发布于:2003-10-15 15:20
在\"ndis.h\"头文件里有
|
|
5楼#
发布于:2003-10-15 21:41
[quote]那里面保存的是:你原来包的信息。/或者为空 老大在哪里能看到PACKET的结构和其中的MINIPORTRESERVED和PROTOCOLRESERVED,我在ddk,passthru都找了,没有啊? 我好长时间就想看PACHKET的结构了,谢谢! [/quote] 那两个数组实际上是留给你自由使用的。用完了记得清掉。 [编辑 - 12/2/03 by antspower] |
|
|
6楼#
发布于:2003-10-16 09:03
在\"ndis.h\"头文件里有 thanks,where is ndis.h? [编辑 - 10/16/03 by taijun] |
|
7楼#
发布于:2003-10-16 09:14
你可以看DDK里的NDIS_PACKET结构的说明。
|
|
|
8楼#
发布于:2003-10-19 15:47
我装的是Win2k DDK,在目录D:\\NTDDK\\inc\\ddk下
自己直接搜索ndis.h就可以找到了 |
|
9楼#
发布于:2003-10-22 15:36
楼上的,谢谢了
|
|