2010-08-26 79 views
3

根據MSDN命名管道名稱是否有反斜槓?

[管道名稱]必須具有 以下形式:

\\.\pipe\pipename

名稱的pipename部分可以 包括比一個 反斜槓以外的任何字符,包括數字和 特殊字符。整個管道 名稱字符串最長可以有256個字符。管道名稱不是 區分大小寫。

但有很多例子,我已經看到命名管道名稱與反斜槓在他們。例如,SQL Server的標準管道名稱是\\.\pipe\sql\query

從SysInternals運行PipeList顯示我的機器上有很多管道,其中名稱包含反斜槓。

那麼,一個管道名稱中是否可以有反斜槓?

我問,因爲我是在製作有多個管道服務,像這樣的名字:

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

第一管被創造後,創造了其他管材會失敗,Windows錯誤123(ERROR_INVALID_NAME)。如果我跳過創建第一個管道,其他所有其他名稱中帶有反斜槓的字符都可以正常工作。

看起來,管道是像文件系統一樣的層次結構,並且如果具有特定名稱的管道,則該名稱不能再用作其他管道的「文件夾」或容器。

當試圖找出這個問題時,我遇到了MSDN文章,現在質疑我是否應該使用反斜槓。

有什麼建議嗎?

回答

6

雖然這似乎是無證的行爲,但它至少是一致的。只是不要創建與'文件夾'具有相同名稱的管道。 Windows在內部實現了命名管道作爲文件系統。但是請記住,惡意應用程序可能會創建\。\ pipe \ MyApp管道並導致您的應用程序失敗。考慮到使用反斜槓的唯一好處是純粹的語義,我建議使用下劃線或其他字符。