【发布时间】:2013-07-18 17:50:34
【问题描述】:
我正在尝试实现零复制机制,即与TransmitFile() API 相反的功能。
但我不知道如何在内核中注册缓冲区。以下是我想要实现零拷贝的详细信息:
我们将在我们的客户端缓冲区中收到来自服务器的大量数据,我也怀疑天气数据将进入套接字缓冲区(客户端)还是首先进入 NIC 缓冲区,请清除这个疑问也。
现在我想从套接字缓冲区将数据直接复制到内核缓冲区,然后复制到磁盘中的文件,而不进行读写系统调用,即不切换上下文。
只能将数据直接移动到内核空间内的内核缓冲区。
是否有任何 API 或某种方法可以实现这一点?还有其他建议吗?
套接字在 TCP/IP 连接上。
【问题讨论】:
-
你说的是哪个内核?什么是“TransmitFile() API”?更多细节会很好。
-
要么您将第三方的东西归因于 C++ 本身,要么您只是忘记了我们并非都在与您在同一个项目上工作。敞开心扉!告诉我们你在说什么。
-
你的硬件是什么?
-
好吧,我不知道我正在使用 Windows 7,无论它使用的是哪个内核。对于 Transmit File() API,请参阅此链接:msdn.microsoft.com/en-us/library/windows/desktop/…
-
@Satya:别厚脸皮;你来这里是为了免费帮助。当然,在过去 23 小时内发布的关于这个问题的大量答案(阅读:none)表明“其他人知道 [你] 在说什么”。
标签: c++ windows winapi zero-copy