阅读:1612回复:3
在passthru框架下,内核态如何缓存数据包?
在passthru框架下,内核态如何缓存数据包?
我想把PtReceivePacket中接收到的数据包缓存下来,在适当的时候再发送给上层,查看了passthru的源代码和一些资料,好像passthru自身就有缓存数据包的机制,但是我想和passthru自身缓存的数据包分开,自己来做缓存的工作,越看代码越糊涂,百思不得其解,忘高人指点,我到底应该怎样缓存,应该使用怎样的几个接口 |
|
沙发#
发布于:2007-03-13 09:39
唉,怎么没有人帮忙呢?
|
|
板凳#
发布于:2007-03-15 11:57
用NdisAllocatePacketPoolEx创建一个缓冲池,然后自已用NdisAllocatePacket分配包描述符,然后分配缓冲等,自己来维护这一个缓冲池就可以了,然后拷贝包的复本,好像是NdisPacketCopy还是什么的,忘记了,查查DDK Document吧
也才学驱动开发,互相学习 |
|
地板#
发布于:2007-03-16 14:39
谢谢楼上的回复。我这两天研究了一下passthru的源代码,发现缓存其实是很简单的,看一看ddk2003自带的passthru源代码就明白了,它自身就实现了一个缓冲池,就是在PtQueueReceivePacket()接口中做的缓存工作,其实缓存工作只是在当前的pAdapt结构中保存了Packet的指针,在条件满足的时候再向上层indicate up,向上indicate up的接口就是PtFlushReceivePacket(),大家可以自己看一下源代码
|
|