Допустим, какое-то приложение предоставляет именованный канал с именем "Pipe1". Если я хочу выразить именованный канал как путь к файлу, который можно использовать для записи или чтения, путь \\.\pipe\Pipe1
или \\?\pipe\Pipe1
действителен и указывает на именованный канал.
Теперь для облегчения проверки пути (некоторые приложения могут не понравиться \\.\
), Я подумал, что, возможно, можно использовать символическую ссылку, чтобы указать на устройство именованного канала. Я пытался создать ссылку через ссылку mklink link \\.\pipe\Pipe1
, mklink link \\?\pipe\Pipe1
, а также mklink link \\?\GlobalRoot\Device\NamedPipe\Pipe1
, но все они терпят неудачу при попытке открыть ссылку со следующей ошибкой:
Данные, присутствующие в буфере точек повторной обработки, недействительны
Имеет ли смысл то, что я пытаюсь сделать? Может ли символическая ссылка указывать на любой путь, а не только на файловую систему? Есть ли лучший способ выполнить то, что я пытаюсь сделать?
Странно, я вроде помню, что пытался решить эту проблему раньше, и символическая ссылка работала таким образом, более или менее. Кроме того, символическая ссылка является единственным используемым типом, создание жесткой ссылки не удается (поскольку канал не находится на разделе NTFS), и ссылка на каталог или соединение не может использоваться для ввода-вывода.