在命名管道上使用WriteFile函数时,nNumberOfBytesToWrite可以与lpNumberOfBytesWritten或0不同吗?

时间:2016-11-28 01:06:36

标签: windows named-pipes

根据文件,答案是肯定的。如果命名管道与PIPE_NOWAITPIPE_TYPE_BYTE一起使用,WriteFile应该将字节写入缓冲区,直到填满或写入所有请求的字节为止。

  

WriteFile操作受管道句柄的等待模式影响   当管道缓冲区中没有足够的空间时。有了   阻塞等待句柄,写操作直到成功才能成功   通过从中读取的线程在缓冲区中创建了足够的空间   管道的另一端。使用非阻塞等待句柄,写入   operation立即返回非零值,而不写任何值   bytes(用于消息类型管道)或写入后的字节数   缓冲区保持(对于字节类型的管道)。

但是,我的实验与此陈述相矛盾。当我在WriteFile模式下使用PIPE_NOWAIT时,无论类型模式(PIPE_TYPE_BYTEPIPE_TYPE_MESSAGE)如何,lpNumberOfBytesWritten始终等于nNumberOfBytesToWrite当管道缓冲区空间大于nNumberOfBytesToWrite时,当管道缓冲区空间小于0时,等于nNumberOfBytesToWrite

我只希望PIPE_TYPE_MESSAGE使用此行为,而不是使用PIPE_TYPE_BYTE

我误读了文档吗?

0 个答案:

没有答案