匿名管道操作

您所在的位置:网站首页 mfc管道通信 匿名管道操作

匿名管道操作

#匿名管道操作| 来源: 网络整理| 查看: 265

匿名管道操作 项目 09/24/2022

CreatePipe 函数创建匿名管道并返回两个句柄:管道的读取句柄和管道的写入句柄。 读取句柄对管道具有只读访问权限,写入句柄对管道具有仅写访问权限。 若要使用管道进行通信,管道服务器必须将管道句柄传递给另一个进程。 通常,这是通过继承完成的;也就是说,进程允许子进程继承句柄。 此过程还可以使用 DuplicateHandle 函数复制管道句柄,并使用某种形式的进程间通信(例如 DDE 或共享内存)将其发送到不相关的进程。

管道服务器可以将读取句柄或写入句柄发送到管道客户端,具体取决于客户端是否应使用匿名管道发送信息或接收信息。 若要从管道中读取,请在对 ReadFile 函数的调用中使用管道的读取句柄。 当另一个进程已写入管道时, ReadFile 调用将返回。 如果管道的所有写入句柄都已关闭或读取操作完成之前发生错误,则 ReadFile 调用也可以返回。

若要写入管道,请在对 WriteFile 函数的调用中使用管道的写入句柄。 在将指定的字节数写入管道或发生错误之前, WriteFile 调用不会返回。 如果管道缓冲区已满且写入的字节数更多, 则 WriteFile 不会返回,直到另一个进程从管道中读取,使更多的缓冲区空间可用。 管道服务器在调用 CreatePipe 时指定管道的缓冲区大小。

匿名管道不支持异步 (重叠) 读取和写入操作。 这意味着不能对匿名管道使用 ReadFileEx 和 WriteFileEx 函数。 此外,当这些函数与匿名管道一起使用时,将忽略 ReadFile 和 WriteFile 的 lpOverlapped 参数。

匿名管道存在,直到所有管道句柄(读取和写入)都已关闭。 进程可以使用 CloseHandle 函数关闭其管道句柄。 当进程终止时,所有管道句柄也会关闭。

匿名管道是使用具有唯一名称的命名管道实现的。 因此,通常可以将句柄传递给匿名管道,该函数需要对命名管道的句柄。

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3