cxtcxtcxt
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2007-07-26
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1612回复:3

在passthru框架下,内核态如何缓存数据包?

楼主#
更多 发布于:2007-03-12 20:53
  在passthru框架下,内核态如何缓存数据包?
我想把PtReceivePacket中接收到的数据包缓存下来,在适当的时候再发送给上层,查看了passthru的源代码和一些资料,好像passthru自身就有缓存数据包的机制,但是我想和passthru自身缓存的数据包分开,自己来做缓存的工作,越看代码越糊涂,百思不得其解,忘高人指点,我到底应该怎样缓存,应该使用怎样的几个接口
cxtcxtcxt
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2007-07-26
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-13 09:39
唉,怎么没有人帮忙呢?
jruinet
驱动牛犊
驱动牛犊
  • 注册日期2007-03-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分130分
  • 威望14点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-15 11:57
用NdisAllocatePacketPoolEx创建一个缓冲池,然后自已用NdisAllocatePacket分配包描述符,然后分配缓冲等,自己来维护这一个缓冲池就可以了,然后拷贝包的复本,好像是NdisPacketCopy还是什么的,忘记了,查查DDK Document吧


也才学驱动开发,互相学习
cxtcxtcxt
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2007-07-26
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-16 14:39
谢谢楼上的回复。我这两天研究了一下passthru的源代码,发现缓存其实是很简单的,看一看ddk2003自带的passthru源代码就明白了,它自身就实现了一个缓冲池,就是在PtQueueReceivePacket()接口中做的缓存工作,其实缓存工作只是在当前的pAdapt结构中保存了Packet的指针,在条件满足的时候再向上层indicate up,向上indicate up的接口就是PtFlushReceivePacket(),大家可以自己看一下源代码
游客

返回顶部