double arrow

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


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

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.

Заказать ✍️ написание учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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