Разница между режимами типа PIPE_TYPE_BYTE
и PIPE_TYPE_MESSAGE
описана в http://msdn.microsoft.com/en-us/library/aa365605.aspx:
Режим ввода типов
Режим ввода типов каналов определяет способ записи данных.в именованную трубу.Данные могут передаваться через именованный канал в виде потока байтов или потока сообщений.Канальный сервер указывает тип канала при вызове CreateNamedPipe для создания экземпляра именованного канала.Режимы типа должны быть одинаковыми для всех экземпляров канала.
Чтобы создать канал байтового типа, укажите PIPE_TYPE_BYTE или используйте значение по умолчанию.Данные записываются в канал как поток байтов, и система не делает различий между байтами, записанными в различных операциях записи.
Чтобы создать канал типа сообщения, укажите PIPE_TYPE_MESSAGE.Система обрабатывает байты, записанные в каждой операции записи в канал, как блок сообщений.Система всегда выполняет операции записи на каналах типа сообщений, как если бы был включен режим сквозной записи.
Если вы хотите записать поток данных относительно каналов, вам следует использовать режим типа PIPE_TYPE_BYTE
.Затем вы можете записать любые данные в буфер канала относительно WriteFile
и прочитать их на другой стороне относительно ReadFile
.Как именно данные будут отправлены, для вас не важно.Данные из некоторой операции WriteFile
могут передаваться как один блок данных.
Если вы используете режим типа PIPE_TYPE_MESSAGE
, каждая операция записи следует за передачей данных, поскольку запись в канале будет интерпретироваться какотправка сообщения.Существует специальная функция TransactNamedPipe
, которая позволяет вам записать сообщение и прочитать сообщение из указанного именованного канала в отдельную сетевую операцию .