Создать символическую ссылку на именованный канал

494
IllidanS4

Допустим, какое-то приложение предоставляет именованный канал с именем «Pipe1». Если я хочу выразить именованный канал как путь к файлу, который можно использовать для записи или чтения, путь \\.\pipe\Pipe1или \\?\pipe\Pipe1является допустимым и указывает на именованный канал.

Теперь для облегчения проверки пути (некоторые приложения могут не понравиться \\.\), я подумал, что, возможно, можно использовать символическую ссылку, чтобы указать на устройство именованного канала. Я попытался создать ссылку с помощью mklink link \\.\pipe\Pipe1, mklink link \\?\pipe\Pipe1и также mklink link \\?\GlobalRoot\Device\NamedPipe\Pipe1, но все они не в состоянии при попытке открыть ссылку, со следующей ошибкой:

Данные, присутствующие в буфере точек повторной обработки, недействительны

Имеет ли смысл то, что я пытаюсь сделать? Может ли символическая ссылка указывать на любой путь, а не только на файловую систему? Есть ли лучший способ выполнить то, что я пытаюсь сделать?

Странно, я вроде помню, что пытался решить эту проблему раньше, и символическая ссылка работала таким образом, более или менее. Кроме того, символическая ссылка является единственным используемым типом, создание жесткой ссылки не удается (поскольку канал не находится на разделе NTFS), и ссылка на каталог или соединение не может использоваться для ввода-вывода.

2
Что делать, если вы попробуете это с помощью опции [`/ H` - _Hard link_ или` / J` - _Directory Junction_] (https://technet.microsoft.com/en-us/library/cc753194 (WS.10). ASPX)? Gerold Broser 6 лет назад 0
@GeroldBroser Жесткая ссылка не может быть использована, она может указывать только на реальный файл в том же разделе, а каталог не может использоваться для записи или чтения. IllidanS4 6 лет назад 0

0 ответов на вопрос