В соответствии с MSDN ,
[Имя канала] должно иметь следующую форму:
\\.\pipe\pipename
Пипенамечасть имени может содержать любой символ, кроме обратной косой черты, включая цифры и специальные символы.Вся строка имени канала может содержать до 256 символов.Имена каналов не чувствительны к регистру.
Но есть много примеров, когда я видел имена именованных каналов с обратными слешами в них.Например, стандартное имя канала для SQL Server: \\.\pipe\sql\query
.
Запуск PipeList из SysInternals показывает множество каналов на моем компьютере, где имя содержит обратную косую черту.
Так может ли имя канала содержать обратную косую черту или нет?
Я спрашиваю, потому что я создавал службу с несколькими каналами с такими именами:
\\.\pipe\MyApp
\\.\pipe\MyApp\0
\\.\pipe\MyApp\1
\\.\pipe\MyApp\2
После первого каналабыло создано, создание других каналов завершится с ошибкой Windows 123 (ERROR_INVALID_NAME).Если бы я пропустил создание первого канала, все остальные, с символом обратной косой черты в имени, работали бы очень хорошо.
Похоже, что каналы являются иерархическими, как файловая система, и если у вас есть канал сконкретное имя, это имя больше нельзя использовать в качестве «папки» или контейнера для других каналов.
Пытаясь выяснить это, я наткнулся на статью MSDN и сейчас задаю вопросдолжен ли я использовать обратную косую черту вообще.
Любой совет?