CallNamedPipe

CallNamedPipe – функция CallNamedPipe соединяется с сообщением-типом канала (и ждет, если экземпляр канала недоступен). Считывает в канал и записывает с канала, а потом закрывает канал.

Описание этой функции:

BOOL CallNamedPipe( LPCTSTR lpNamedPipeName,// указатель на именованный каналLPVOID lpInBuffer,// указатель на записываемый буфер DWORD nInBufferSize,// размер, в байтах, записываемого буфераLPVOID lpOutBuffer,// указатель на считываемый буферDWORD nOutBufferSize,// размер, в байтах, считываемого буфераLPDWORD lpBytesRead,// указатель на считываемое количество байтовDWORD nTimeOut // time-out значение, в миллисекундах);

Параметры:

lpNamedPipeName – указатель на строку с завершающим нулем, специфицирующую именованный канал.

lpInBuffer – указатель на буфер, который содержит данные, записываемые в канал.

nInBufferSize – описатель размера, в байтах, записываемого буфера.

lpOutBuffer – указатель на буфер, который получает считываемые данные с канала.

nOutBufferSize – описатель размера, в байтах, считываемого буфера.

lpBytesRead – указатель на 32-битное значение, которое получает количество байт, считываемые с канала.

nTimeOut – описатель количества миллисекунд, в течение которого ожидается доступ к именованному каналу. Кроме числовых значений могут быть специфицированные ниже перечисленные специальные значения:

Значение Пояснение
NMPWAIT_NOWAIT Нет ожидания для именованного канала. Если именованный канал не доступен, функция возвращает ошибку.
NMPWAIT_WAIT_FOREVER Ожидания неограниченны.
NMPWAIT_USE_DEFAULT_WAIT Используется time-out по умолчанию, оговоренное в вызове CreateNamedPipeфункции.

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

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

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

Замечания:

Вызов CallNamedPipeэквивалентен вызовуCreateFile (или WaitNamedPipe, если CreateFile не может открыть канал непосредственно), TransactNamedPipe, и CloseHandleфункции.

Если сообщение, записанное в канал серверным процессом длиннее, чем nOutBufferSize, CallNamedPipe возвращает FALSE и GetLastError возвращает ERROR_MORE_DATA. Остаток от сообщения отбрасывается, потому что CallNamedPipe закрывает дескриптор канала до возврата.

CallNamedPipe неудачна, если канал типа байт.