【发布时间】:2017-12-02 02:03:55
【问题描述】:
我正在开发一个 NDIS 过滤器驱动程序,它实际上将数据从 NET_BUFFER 复制到发送路径中驱动程序分配的缓冲区,并将这些驱动程序分配的缓冲区推入内部队列。稍后,数据再次从队列中这些驱动程序分配的缓冲区复制到 IRP 缓冲区。我想避免这个数据副本。
在 Linux 中,我们可以创建一个 skbuff 的克隆,并且克隆的 skbuff 可以排队供以后使用。 Windows 中是否也有类似的选项?如果有办法克隆 NET_BUFFER,我们可以简单地避免从 NET_BUFFER 到驱动程序分配的内存缓冲区的第一次复制。
如果有一种方法可以实现从 NetBufferLists 到 IRP 缓冲区的零复制,那么它确实是一个理想的解决方案。如果有人可以提出更好的解决方案来避免发送路径中的副本,那将非常有帮助。
【问题讨论】:
标签: ndis