lskxl
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2009-05-26
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1191回复:2

请教(80分)

楼主#
更多 发布于:2003-05-08 11:27
我现在在MPSend中得到了封包MyPacket
想把其中的信息保存到pBuff中
不知道下面的代码有没有问题
PNDIS_BUFFER BuffDT;
PUCHAR BuffVA,pBuff;
UINT BuffLen;
PUINT pLength;
*pLength=0;
BuffLen=0;

NdisQueryPacket(MyPacket,NULL,NULL,&BuffDT,NULL);
while(BuffDT!=(PNDIS_BUFFER)NULL)
{
   NdisQueryBuffer(BuffDT,&BuffVA,&BuffLen);
   NdisMoveMemory(pBuff,BuffVA,BuffLen);
   pBuff=pBuff+BuffLen;
   *pLength+=BuffLen;
   NdisGetNextBuffer(BuffDT,&BuffDT);
}

[编辑 -  5/8/03 by  lskxl]
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-08 15:36
我现在在MPSend中得到了封包MyPacket
想把其中的信息保存到pBuff中
不知道下面的代码有没有问题
PNDIS_BUFFER BuffDT;
PUCHAR BuffVA,pBuff;
UINT BuffLen;
PUINT pLength;
*pLength=0;
BuffLen=0;

NdisQueryPacket(MyPacket,NULL,NULL,&BuffDT,NULL);
while(BuffDT!=(PNDIS_BUFFER)NULL)
{
   NdisQueryBuffer(BuffDT,&BuffVA,&BuffLen);
   NdisMoveMemory(pBuff,BuffVA,BuffLen);
   pBuff=pBuff+BuffLen;
   *pLength+=BuffLen;
   NdisGetNextBuffer(BuffDT,&BuffDT);
}

[编辑 -  5/8/03 by  lskxl]


给你一段代码作参考:

UINT CopyPacketData(PNDIS_PACKET pPacket,
PCHAR pData,
UINT iSize)
{
UINT iLength=0;
UINT iPos=0;
PNDIS_BUFFER pNextBuffer=NULL;
PCHAR pBuffer=NULL;
iPos = 0;
NdisQueryPacket( pPacket,
NULL,
NULL,
&pNextBuffer,
&iLength );
if( iLength > iSize ) return iPos;
while( pNextBuffer ) {
  NdisQueryBuffer( pNextBuffer, &pBuffer, &iLength );
  if( iLength > iSize - iPos || !pBuffer ) break;
  NdisMoveMemory( pData + iPos, pBuffer, iLength );
  NdisGetNextBuffer( pNextBuffer, &pNextBuffer );
  iPos += iLength;
}
return iPos;
}

其中pData为你要的包内容。

不要拒绝我... 哈!哈! 给分!
shrimp
驱动牛犊
驱动牛犊
  • 注册日期2003-04-30
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-08 15:39
其中iSize可以用:
NdisQueryPacket( pPacket,
NULL,
NULL,
NULL,
&iTotal);
得到。
pPacket为你的myPacket.
不要拒绝我... 哈!哈! 给分!
游客

返回顶部