根据文件,答案是肯定的。如果命名管道与PIPE_NOWAIT
和PIPE_TYPE_BYTE
一起使用,WriteFile
应该将字节写入缓冲区,直到填满或写入所有请求的字节为止。
WriteFile操作受管道句柄的等待模式影响 当管道缓冲区中没有足够的空间时。有了 阻塞等待句柄,写操作直到成功才能成功 通过从中读取的线程在缓冲区中创建了足够的空间 管道的另一端。使用非阻塞等待句柄,写入 operation立即返回非零值,而不写任何值 bytes(用于消息类型管道)或写入后的字节数 缓冲区保持(对于字节类型的管道)。
但是,我的实验与此陈述相矛盾。当我在WriteFile
模式下使用PIPE_NOWAIT
时,无论类型模式(PIPE_TYPE_BYTE
或PIPE_TYPE_MESSAGE
)如何,lpNumberOfBytesWritten
始终等于nNumberOfBytesToWrite
当管道缓冲区空间大于nNumberOfBytesToWrite
时,当管道缓冲区空间小于0
时,等于nNumberOfBytesToWrite
。
我只希望PIPE_TYPE_MESSAGE
使用此行为,而不是使用PIPE_TYPE_BYTE
。
我误读了文档吗?