hPipe = CreateNamedPipe(
lpszPipename, // pipe name
PIPE_ACCESS_DUPLEX, // read/write access
PIPE_TYPE_MESSAGE | // message type pipe
PIPE_READMODE_MESSAGE | // message-read mode
PIPE_WAIT, // blocking mode
PIPE_UNLIMITED_INSTANCES, // max. instances
BUFSIZE, // output buffer size
BUFSIZE, // input buffer size
0,
我有两个问题:
1
或2
怎么办? 2
,假设其中一个管道通过 A 连接,则 B 尝试连接lpszPipename
,是否保证< strong> B 会连接到没人连接的那个吗?答案 0 :(得分:0)
如果使用FILE_FLAG_FIRST_PIPE_INSTANCE标志,则使用相同名称对CreateNamedPipe的第二次调用失败,或者如果未使用此标志,则连接到同一管道。在第二个CreateNamedPipe调用成功的情况下,它返回另一个句柄到同一个内核对象。
答案 1 :(得分:0)
在CreateNamedPipe函数的第四个参数中,您可以限制可以创建的命名管道实例的数量。如果您在示例中将其设置为PIPE_UNLIMITED_INSTANCE并使用相同参数调用CreateNamedPipe函数两次,则将创建两个实例(它们将共享相同的管道名称),并且两个客户端将能够连接到您的命名管道服务器(每个管道服务器到一个命名管道实例)。
有关详细信息,请查看http://msdn.microsoft.com/en-us/library/aa365594%28v=VS.85%29.aspx