Получение информации об именованном канале

Для получения информации о режимах работы и состоянии именованного канала используются функции:

GetNamedPipeHandleState;

GetNamedPipeInfo;

Изменение состояния именованного канала.

Изменить состояние именованного канала можно посредством функции

SetNamedPipeHandleState;

Обмен данными по именованному каналу.

Как и в случае с анонимным каналом, для обмена данными по именованному каналу используются функции ReadFile и WriteFile, но с одним отличием, которое заключается в следующем. Так как в случае именованного канала разрешен асинхронный обмен данными, то в функциях ReadFile и WriteFile может использоваться параметр lpOverlapped при условии, что в вызове функции CreateNamedPipe в параметре dwOpenMode был установлен флаг FILE_FLAG_OVERLAPPED.

Для асинхронного ввода-вывода по именованному каналу могут также использоваться функции ReadFileEx и WriteFileEx.

Для копирования данных из именованного канала используется функция PeekNamedPipe, которая копирует данные в буфер, не удаляя их из канала. Эта функция имеет следующий прототип:

PeekNamedPipe

Для обмена сообщениями по сети может также использоваться функция TransactNamedPipe, которая объединяет операции записи и чтения в одну операцию (транзакцию) и имеет следующий прототип:

TransactNamedPipe

Параметры этой функции аналогичны параметрам функций ReadFile и WriteFile. Отметим, что функция TransactNamedPipe может использоваться только в том случае, если сервер при создании именованного канала установил флаги PIPE_TYPE_MESSAGE и PIPE_READMODE_MESSAGE.

Для передачи единственной транзакции по именованному каналу используется функция CallNamedPipe.

После завершения обмена данными по именованному каналу, потоки должны закрыть дескрипторы экземпляров именованного канала, используя функцию CloseHandle.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: