Способ открытия канала - префикс в имени файла. Это должно быть \\\\.\\pipe\\pipename
, что не является допустимым именем файла (для реального файла вы обычно начинаете с относительного пути или буквы диска, двоеточия и косой черты, за исключением редкого случая открытия с использованием идентификатора устройства или некоторые такие). Поскольку он не может открыть файл, он должен открыть канал.
Чтобы открыть постоянный канал, я не уверен, хотите ли вы использовать его из нескольких приложений одновременно (если это так, вы можете открыть его из каждого, но будьте осторожны, чтобы не заблокировать его) или сделать так, чтобы он сохранялся между сессий. Если последнее, я не совсем уверен, но я никогда не слышал о способе сохранить канал открытым, когда ни одна программа не открыла его (я бы предположил, что в некотором смысле это похоже на сохранение файла открытым). возможно , что, пока вы не CloseHandle
, оно останется открытым до следующей перезагрузки. Стоит проверить, по крайней мере.
Если вам нужна постоянная передача данных между приложениями или сеансами, вы, возможно, захотите найти более надежный (и более гибкий) метод. Каналы могут быть легко заблокированы, если произойдет что-то непредвиденное (что всегда следует ожидать, когда несколько потоков / процессов работают вместе), что может заморозить одно или оба подключенных приложения (часто до такой степени, что даже убить их в отладчике трудно)