Digamos que algum aplicativo exponha um pipe nomeado com o nome "Pipe1". Se eu quiser expressar o pipe nomeado como um caminho de arquivo que pode ser usado para gravação ou leitura, o caminho \.\pipe\Pipe1
ou \?\pipe\Pipe1
é válido e aponta para o pipe nomeado.
Agora, para facilitar a validação do caminho (alguns aplicativos podem não gostar do \.\
), pensei que talvez um link simbólico pudesse ser usado para apontar para o dispositivo de pipe nomeado. Eu tentei criar o link via mklink link \.\pipe\Pipe1
, mklink link \?\pipe\Pipe1
e também mklink link \?\GlobalRoot\Device\NamedPipe\Pipe1
, mas todos eles falham ao tentar abrir o link, com o seguinte erro:
The data present in the reparse point buffer is invalid
Faz sentido o que estou tentando fazer? Um link simbólico pode apontar para qualquer caminho e não apenas para o sistema de arquivos? Existe uma maneira melhor de realizar o que estou tentando fazer?
Estranhamente, lembro que estava tentando resolver esse problema antes, e o link simbólico funcionava assim, mais ou menos. Além disso, um link simbólico é o único tipo utilizável, criando um link físico com falha (porque o pipe não está em uma partição NTFS) e um link de diretório ou uma junção não pode ser usado para i / o.