gpt4 book ai didi

windows - WriteFile 函数的 lpNumberOfBytesWritten 参数

转载 作者:可可西里 更新时间:2023-11-01 09:31:17 24 4
gpt4 key购买 nike

MSDN 说,

When writing to a non-blocking, byte-mode pipe handle with insufficient buffer space, WriteFile returns TRUE with *lpNumberOfBytesWritten < nNumberOfBytesToWrite.

对于文件或套接字(不是管道),当我同步调用函数时,*lpNumberOfBytesWritten 是否小于 nNumberOfBytesToWrite(结果为 TRUE)。

如果是这样,为什么(以及什么时候)相应的驱动程序会那样完成 IRP?

当我看到下面的代码时,我总是担心“如果 *lpNumberOfBytesWritten < BytesToWrite 会怎样?”

BOOL fOk = WriteFile(hFileOrSocket, ...); // Synchronously
if (fOk)
{
// It assumes everything is fine
}

我不需要担心这个吗?

最佳答案

据我所知,如果打开文件句柄进行同步写入 - 您描述的情况 (*lpNumberOfBytesWritten < BytesToWritten) 将永远不会发生。

部分写入的全部意义在于让您有机会在失败并出现诸如 WSAEWOULDBLOCK 之类的错误之前写入一部分数据。或类似的。异步 I/O 模型要求尽可能多地写入,直到出现适当的错误,然后等待部分 I/O 完成。

不要与重叠 I/O 混淆。您在那里安排 I/O 并异步完成(由底层驱动程序)。

关于windows - WriteFile 函数的 lpNumberOfBytesWritten 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com