RT看了网上一些资料,基本都是如下 操作流程:passthru的PtReceive 得到某数据包 --->把 数据复制下来 ,改一改,弄一弄--->NdisSend发出去。      ~~~~~~~~~~~~~我现在想实现这样的要求:(举个例子)
passthru 得到一TCP数据包 ETHeader+IPHeader+TCPHeader+数据(这里就假设是"Test")--->修改数据(把前面红色的数据"Test"改成"TestAAA")--->把改后的数据包 继续传到上层协议,仍然能被应用程序收到,但收到的数据变成"TestAAA"了。        ~~~~~~~~~~~~~在①应该是相当于 自己重新构建了一个 数据包 然后NdisSend。
那在②中应该如何做?  重新构建了一个 数据包?----->如何向上传??     直接修改PNDIS_PACKET?----->怎么改??我要实现②的形式,请问怎么弄啊?

解决方案 »

  1.   

    你现在概念不清楚哦PtReceive 可以做过滤包历程,不用再NdisSend了。
    如果想自己构造一个包传到上层,可以直接调用目标适配器的ReceiveHandle 
      

  2.   

    现在 脑子是蛮乱的。用这个函数么:NDIS_STATUS
    PtReceive(
        IN  NDIS_HANDLE         ProtocolBindingContext,
        IN  NDIS_HANDLE         MacReceiveContext,
        IN  PVOID               HeaderBuffer,
        IN  UINT                HeaderBufferSize,
        IN  PVOID               LookAheadBuffer,
        IN  UINT                LookAheadBufferSize,
        IN  UINT                PacketSize
        )
    参数怎么传啊?我现在只想改改数据,然后将包继续往上走
      

  3.   

    你去看看NdisSend这个函数的源代码,这是个宏,仿照这个写就OK
      

  4.   

    up upAre there other views on it?
      

  5.   

    怎么这样贴子就没人解决呢!难道CSDN就没有驱动级的高手吗?