零拷贝接收功能

Zero copy receive function

本文关键字:功能 拷贝      更新时间:2023-10-16

我正在尝试实现零复制机制,即与TransmitFile() API相反的函数。

但我不知道如何在内核中注册缓冲区。以下是我想要实现零拷贝的细节:

  1. 我们将在客户端缓冲区中从服务器接收大量数据,我在这里也有一个疑问,天气数据会进入套接字缓冲区(客户端的),或者首先进入NIC缓冲区,请也消除这个疑问。

  2. 现在,我想从套接字缓冲区将数据直接复制到内核缓冲区,然后复制到光盘中的文件,而无需进行读写系统调用,即无需切换上下文。

  3. 数据必须仅在内核空间内直接移动到内核缓冲区。

有没有API或某种方法可以实现这一点?还有其他建议吗?

套接字位于TCP/IP连接上。

没有任何API用于接收意外。但您可以尝试ZwWrite()。