首页
社区
课程
招聘
[求助]NDIS miniport驱动中处理IRP_MJ_WRITE碰到的问题
发表于: 2013-3-23 12:34 3951

[求助]NDIS miniport驱动中处理IRP_MJ_WRITE碰到的问题

2013-3-23 12:34
3951
(原来把帖子发在了调试版块,一直没有回应,怀疑是不是发错地方了,所以转到这里,继续求助)   
最近在调试Tap-win32虚拟网卡驱动的时候,碰到问题:
    在应用程序中我调用WriteFile向Tap设备写入了64字节的TCP数据包,但是在“网上邻居”中“虚拟网卡”中只看到“接收了一个数据包”,看到“发送数据包为0”。  
    为了捕获刚才发送的数据,我创建了一个Socket应用程序,一直监听从虚拟网卡向外发送的数据,也收不到任何数据。  
    我在DriverEntry中调用NdisMRegisterMiniport中已经初始化了NDIS_MINIPORT_CHARACTERISTICS变量中的SendHandler。
    现在的疑问是:在调用NdisMEthIndicateReceiveComplete后,NDIS库是不是应该调用网卡驱动的SendHandler函数向上层驱动转发前面从“WriteFile”传进来的数据?我想搞明白
在调用NdisMEthIndicateReceiveComplete后,系统干什么了?数据是经过一个什么样的过程转发给协议栈的?
    另外,SendHandler一直没有被调用,也不知道哪里出了错误。
部分源程序:
NTSTATUS
TapDeviceHook (IN PDEVICE_OBJECT p_DeviceObject, IN PIRP p_IRP)
{     
       ......     
       case IRP_MJ_WRITE     
      {         
              ......         
              NdisMEthIndicateReceive (
                    l_Adapter->m_MiniportAdapterHandle,            
                    (NDIS_HANDLE) l_Adapter,            
                    (unsigned char *) &l_Adapter->m_UserToTap,            
                    sizeof (l_Adapter->m_UserToTap),           
                    (unsigned char *) p_IRP->AssociatedIrp.SystemBuffer,           
                    l_IrpSp->Parameters.Write.Length,           
                    l_IrpSp->Parameters.Write.Length);       NdisMEthIndicateReceiveComplete(l_Adapter->m_MiniportAdapterHandle);     p_IRP->IoStatus.Status = l_Status = STATUS_SUCCESS;         
                    ......     
         }   
         ......
}

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已经解决。原因是Socket应用程序中socket参数设置错误。
2013-4-2 16:26
0
游客
登录 | 注册 方可回帖
返回
//