命名pipe道名称是否有反斜杠?

根据MSDN ,

[pipe道名称]必须具有以下forms:

\\.\pipe\pipename

名称的pipe道名部分可以包含除反斜杠以外的任何字符,包括数字和特殊字符。 整个pipe道名称string最多可以有256个字符。 pipe道名称不区分大小写。

但有很多例子,我已经看到命名pipe道名称与反斜杠在其中。 例如,SQL Server的标准pipe道名称是\\.\pipe\sql\query

从SysInternals运行PipeList显示我的机器上的名字包含一个反斜杠的pipe道很多。

那么,pipe道名称是否可以带有反斜杠呢?

我问,因为我正在用几个这样的名字创build一个服务:

 \\.\pipe\MyApp \\.\pipe\MyApp\0 \\.\pipe\MyApp\1 \\.\pipe\MyApp\2 

在创build第一个pipe道之后,创build其他pipe道将失败,并显示Windows错误123(ERROR_INVALID_NAME)。 如果我跳过创build第一个pipe道,所有其他的,在名称中的反斜杠字符,将工作得很好。

看起来,pipe道是像文件系统一样的层次结构,如果你有一个具有特定名称的pipe道,那么这个名称就不能再用作其他pipe道的“文件夹”或容器。

当试图弄清楚这一点,我遇到了MSDN文章,现在质疑我是否应该使用反斜杠。

有什么build议?

Solutions Collecting From Web of "命名pipe道名称是否有反斜杠?"

虽然这似乎是无证的行为,但至少是一致的。 只是不要创建一个与“文件夹”相同名称的管道。 Windows在内部实现了命名管道作为文件系统。 但是请记住,恶意应用程序可能会创建\。\ pipe \ MyApp管道,导致您的应用程序失败。 考虑到使用反斜杠的唯一好处是纯粹的语义,我建议使用下划线或其他字符。