Jackaroo_lzh
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1440回复:9

PRSVD的作用?

楼主#
更多 发布于:2003-10-14 21:30
下面是斑竹以前发的帖子里,我对里面的“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;
}



Jackaroo_lzh
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-14 21:34
怎么浏览后直接发表文章,问题分数为0分?一定要退回去才能有分数吗?
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-15 09:09
那里面保存的是:你原来包的信息。/或者为空
仔细看看PACKET结构。的MINIPORTRESERVED和PROTOCOLRESERVED的作用
放弃瘟草,现吃李草
taijun
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-15 14:18
那里面保存的是:你原来包的信息。/或者为空
仔细看看PACKET结构的MINIPORTRESERVED和PROTOCOLRESERVED的作用

老大在哪里能看到PACKET的结构和其中的MINIPORTRESERVED和PROTOCOLRESERVED,我在ddk,passthru都找了,没有啊?
我好长时间就想看PACHKET的结构了,谢谢!
Jackaroo_lzh
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-15 15:20
在\"ndis.h\"头文件里有
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-15 21:41
[quote]那里面保存的是:你原来包的信息。/或者为空
仔细看看PACKET结构的MINIPORTRESERVED和PROTOCOLRESERVED的作用

老大在哪里能看到PACKET的结构和其中的MINIPORTRESERVED和PROTOCOLRESERVED,我在ddk,passthru都找了,没有啊?
我好长时间就想看PACHKET的结构了,谢谢!
 [/quote]
那两个数组实际上是留给你自由使用的。用完了记得清掉。

[编辑 -  12/2/03 by  antspower]
放弃瘟草,现吃李草
taijun
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-16 09:03
在\"ndis.h\"头文件里有

thanks,where is ndis.h?

[编辑 -  10/16/03 by  taijun]
Dino
驱动牛犊
驱动牛犊
  • 注册日期2001-08-07
  • 最后登录2007-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-16 09:14
你可以看DDK里的NDIS_PACKET结构的说明。
Death is only the beginning
Jackaroo_lzh
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-10-19 15:47
我装的是Win2k DDK,在目录D:\\NTDDK\\inc\\ddk下
自己直接搜索ndis.h就可以找到了
taijun
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-10-22 15:36
 楼上的,谢谢了
游客

返回顶部