Именованные каналы для двунаправленного межпроцессного обмена нетипизированными данными между двумя Windows-машинами, страница 2

Режим

Описание

PIPE_ACCESS_DUPLEX

Канал двунаправленный; оба – серверные и клиентские процессы – могут читать с канала и записывать в него. Этот режим дает серверу эквивалент GENERIC_READ | GENERIC_WRITE доступа  к каналу. Клиент может включать GENERIC_READ или GENERIC_WRITE, или оба, когда он соединяется с каналом, использующим  CreateFile функцию.

PIPE_ACCESS_INBOUND

Поток данных в канале идет только от клиента к серверу. Этот режим дает серверу эквивалент  GENERIC_READ доступа к каналу. Клиент должен включать  GENERIC_WRITE доступ, когда присоединяется к каналу.

PIPE_ACCESS_OUTBOUND

Поток данных в канале идет только от сервера к клиенту. Этот режим дает серверу эквивалент  GENERIC_WRITE доступа к каналу. Клиент должен включать  GENERIC_ READ доступ, когда присоединяется к каналу.

Этот параметр может еще включать или оба флага (FILE_FLAG_WRITE_THROUGH и FILE_FLAG_OVERLAPPED), с доступным write-through режимом, или режим OVERLAPPED.

dwPipeMode – специфицирует тип, чтение и ожидание режимов дескриптора канала.

Один из ниже перечисленных флагов может быть задан. Если вы укажете 0,  то параметр по умолчанию – режим типа байт.

Режим

Описание

PIPE_TYPE_BYTE

Данные записываются в канал как поток байтов. Этот режим не может быть использован с PIPE_READMODE_MESSAGE.

PIPE_TYPE_MESSAGE

Данные записываются в канал как поток сообщений Этот режим может быть использован либо с PIPE_READMODE_MESSAGE, либо  PIPE_READMODE_BYTE.

Режим

Описание

PIPE_READMODE_BYTE

Данные считываются с канала как поток байтов Этот режим может использоваться либо с PIPE_TYPE_MESSAGE, либо PIPE_TYPE_BYTE.

PIPE_READMODE_MESSAGE

Данные считываются с канала как поток сообщений. Этот режим может использоваться, если задан и PIPE_TYPE_MESSAGE.

Один из ниже перечисленных флагов ожидания может быть указан. Если вы укажите 0, то параметр по умолчанию блокирует режим.

Режим

Описание

PIPE_WAIT

Объединение записей в блок доступно.Когда дескриптор канала указан в ReadFile, WriteFile, или ConnectNamedPipe функции, операции не будут выполнены, пока там считывание данных, все данные записаны или клиент присоединен. Использование этого режима означает неограниченное ожидание в течение выполнения действий клиентским процессом.

PIPE_NOWAIT

неблокируемый режим доступен (позволяющий выполнять следующую операцию даже в случае невозможности полного завершения предшествующей). В этом режиме  ReadFile, WriteFile, и ConnectNamedPipe всегда возвращаются немедленно.

nMaxInstances – заданное максимальное число экземпляров, которые могут быть созданы для этого канала. Это же число должно быть задано для всех экземпляров. Если этот параметр - PIPE_UNLIMITED_INSTANCES (количество экземпляров канала), то создание может быть ограниченным только наличием системных ресурсов. 

nOutBufferSize – спецификатор количества байтов в резерв для выводимого буфера.

nInBufferSize – спецификатор количества байтов в резерв для вводимого буфера.

nDefaultTimeOut – спецификатор значения time-out по умолчанию, в миллисекундах, если в WaitNamedPipe-функции спецификатор NMPWAIT_USE_DEFAULT_WAIT. Каждый экземпляр именованного канала должен определять это же значение.

lpSecurityAttributes – указатель на SECURITY_ATTRIBUTES структуру, которая специфицирует дескриптор экземпляра нового именованного канала. Если  lpSecurityAttributes – NULL, именованный канал получает дескриптор экземпляра безопасности по умолчанию, и он не может наследоваться. 

Возвращаемые значения:

Если функция успешна, возвращаемое значение – дескриптор  экземпляра именованного канала серверной части.

               Если      функция неудачна, возвращаемое значение – INVALID_HANDLE_VALUE. Для получения более детальной информации, вызовите GetLastError. Возвращаемое значение ­– ERROR_INVALID_PARAMETER, если nMaxInstances ­– больше, чем PIPE_UNLIMITED_INSTANCES.

ConnectNamedPipe