cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1643回复:6

关于SENDCOMPLETE里进行包内容查询的问题

楼主#
更多 发布于:2005-02-06 11:10
我HOOK了NDIS里的SENDCOMPLETE。。。很奇怪的是。。。。我只要进行包内容的查询并显示。。。。只是加了这一个部分就会BLUE SCREEN。。。(系统环境是w2k sp4)
代码如下

VOID PrintPacket(IN  PNDIS_PACKET        pPacket)
{
PUCHAR ptr;

PNDIS_BUFFER    pCurrentBuffer;
UINT CurrentLength;
UINT            nBufferCount, TotalPacketLength;

NdisQueryPacket(
      (PNDIS_PACKET)pPacket,
      (PUINT )NULL,           // Physical Buffer Count
      (PUINT )&nBufferCount,  // Buffer Count
      &pCurrentBuffer,        // First Buffer
      &TotalPacketLength      // TotalPacketLength
      );

if (nBufferCount==0)
{
return ;
}

NdisQueryBuffer(
      pCurrentBuffer,
      &ptr,
      &CurrentLength
      );

DbgPrint("(%u)ptr==%x-%x-%x\n",CurrentLength,ptr[0],ptr[1],ptr[2]);

}



VOID  HookSendComplete(
      IN  HOOK_CONTEXT_STRUCT *pOurContext,  
      IN NDIS_HANDLE  ProtocolBindingContext,
      IN PNDIS_PACKET  Packet,
      IN NDIS_STATUS Status
      )
{

// __asm int 3;
PNDIS_BUFFER  OldBuffer;
NDIS_STRING m_apn;
DbgPrint("HookSendComplete1\n");

PrintPacket(Packet);//关键就是这里。。。有时候兰。有时候不兰。。。就算这个printpacket函数不兰。。。在最后面RETURN后也会蓝。。。

NdisQueryAdapterInstanceName(&m_apn,pOurContext->m_pBindAdaptHandle);
DbgPrint("SendCompletePacket(Name)...%ws\n",m_apn.Buffer);



if( pOurContext )
{

//DbgPrint("HookSendComplete\n");
((SEND_COMPLETE_HANDLER)pOurContext->m_pOriginalProc)(
ProtocolBindingContext,
Packet,
Status
);
}
DbgPrint("HookSendComplete1.................Complete\n");
return;
}



很奇怪以前好象没有出现这样的问题。。。。。。

所以想请问下各位是怎么回事?
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-07 07:56
为什么没有人回答啊?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-07 17:23
为什么没有人回答啊?

大家也要过年呀,嘿嘿
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-07 18:18
[quote]为什么没有人回答啊?

大家也要过年呀,嘿嘿 [/quote]

哦。。。。原来这样啊。。。 :) :)
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-08 11:50
问题可能在
DbgPrint("(%u)ptr==%x-%x-%xn",CurrentLength,ptr[0],ptr[1],ptr[2]);这一行。

估计是对ptr的访问有问题导致的
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-14 14:23
问题可能在
DbgPrint("(%u)ptr==%x-%x-%xn",CurrentLength,ptr[0],ptr[1],ptr[2]);这一行。

估计是对ptr的访问有问题导致的


不是的。。。。我去掉PRINTPACKET里面的所有DBGPRINT。。。也一样会兰屏
cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-24 15:25
为什么没有人回答我啊?
游客

返回顶部