Согласно MSDN ,
[Имя трубы] должно иметь следующая форма:
\\. \ pipe \ pipename
Часть имени 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 и теперь задаюсь вопросом, следует ли мне использовать обратную косую черту
Любой совет?