【问题标题】:Win32: How to write multiple buffers into NamedPipe using a single OVERLAPPED operation?Win32:如何使用单个 OVERLAPPED 操作将多个缓冲区写入 NamedPipe?
【发布时间】:2014-06-07 05:57:08
【问题描述】:

有没有办法使用单个 OVERLAPPED 操作将多个缓冲区写入 NamedPipe?

【问题讨论】:

    标签: winapi named-pipes overlapped-io


    【解决方案1】:

    不直接,不。您必须将缓冲区复制到单个连续内存块中,然后改为写入。

    【讨论】:

    • 转念一想,WriteFileGather 有什么问题?
    • 天啊!我看到了问题;据推测, FILE_FLAG_NO_BUFFERING 对管道无效。 @Martin:请注意,除非缓冲区非​​常小,否则只执行多个操作可能会更有效。这通常不像听起来那么不方便,因为无论如何您都必须跟踪缓冲区才能在操作完成后释放它们。
    • 多次操作其实是可以的。令人讨厌的是有多个完成事件。是否可以进行多次写入并且只有一个完成事件?
    • @MartinSustrik:在消息模式下,没有。读/写是 1:1。但在流模式下,我会假设是这样,只需提供更大的缓冲区来读取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    相关资源
    最近更新 更多