muxue001
驱动牛犊
驱动牛犊
  • 注册日期2005-06-01
  • 最后登录2005-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1230回复:2

新手郁闷请教:中间层驱动加密MPSend函数蓝屏死机

楼主#
更多 发布于:2005-06-08 21:02
各位大虾求救阿
我刚上手中间层驱动,想做一个加密的东东。具体算法很简单,就是把数据包中的数据8bit前后调一下位再解密。
发送的时候修改的是MPSend函数
Status=NdisAllocateMemory(&pPacketContent,2000,0,HighestAcceptableMax);
       if(Status!=NDIS_STATUS_SUCCESS)
  {
          DBGPRINT(\"AllocateMemeory Failed!\");
 return (NDIS_STATUS_NOT_ACCEPTED);
  }
  if(pPacketContent==NULL)
  {
DBGPRINT(\"AllocateMemory Failed,is empty\");
      return (NDIS_STATUS_NOT_ACCEPTED);
  }
  NdisZeroMemory(pPacketContent,2000);
              NdisQueryPacket(MyPacket,NULL,NULL,&FirstBuffer,TotalPacketLength);
if(FirstBuffer==NULL)
{
DBGPRINT(\"WRONG\");
return (NDIS_STATUS_NOT_ACCEPTED);
       }
NdisMoveMemory(pPacketContent,FirstBuffer,*TotalPacketLength);//到这句SoftIce蓝屏死机
狂郁闷,但又看不出什么问题,如果不用NdisMoveMemory函数的话,还有其它办法把Packet里的内容拷出来做修改吗,而且找了很久,好像大家也没有关于加密的文章,能推荐一下吗,真的非常感谢:)
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-06-08 22:16
有两个错误
1.NdisQueryPacket(MyPacket,NULL,NULL,&FirstBuffer,TotalPacketLength);
应该&TotalPacketLength

NdisMoveMemory(pPacketContent,FirstBuffer,*TotalPacketLength);
应该是TotalPacketLength

2.FirstBuffer是一个PNDIS_BUFFER的结构,不是一个直接指向内存的指针,要调用NdisQueryBuffer得到VirtualAddress,再来调用
NdisMoveMemory(pPacketContent,VirtualAddress,TotalLength)
muxue001
驱动牛犊
驱动牛犊
  • 注册日期2005-06-01
  • 最后登录2005-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-12 16:51
非常感谢斑竹,这个问题已经得到解决,bowing
游客

返回顶部