Компьютерные сети - курс лекций Гуманитарный факультет 12
BOOL WaitNamedPipe (
LPCTSTR lpNamedPipeName,
// указатель на имя канала
DWORD nTimeOut
// интервал ожидания
) ;
В случае успешного завершения эта функция возвращает ненулевое значе- ние, а в
случае неудачи —
FALSE
Опишем параметры этой функции.
Параметр lpNamedPipeName указывает на строку, которая должна иметь вид:
\\server_name\pipe\pipe_name Здесь server_name обозначает имя компьютера, на котором выполняется сервер именованного канала, слово pipe фиксировано, a pipe_name задает имя именованного канала.
Параметр nTimeOut задает временной интервал, в течение которого клиент ждет связь с сервером. Этот временной интервал определяется в
миллисекундах или может быть равен одному из следующих значений:
- N
MPWAIT
_
USE
_
DEFAULT
_
WAIT
— интервал времени ожидания определяется значением параметра nDefauitTimeout, который задается в
функции CreateNamedPipe;
- N
MPWAIT
_
WAIT
_
FOREVER
— бесконечное время ожидания связи с имено- ванным каналом.
Сделаем замечания относительно работы
функции WaitNamedPipe.
1. Если заранее известно, что сервер вызвал функцию ConnectNamedPipe, то
функция соединения клиента с каналом CreateFile (см. далее) может вызываться без предварительного вызова функции WaitNamedPipe.
2. Если не существует экземпляров именованного канала с именем
IpNamedPipe, то
функция WaitNamedPipe немедленно завершается неудачей независимо от времени ожидания, заданного параметром nTimeOut.
3. Если клиент соединяется с каналом до вызова сервером
ConnectNamedPipe, то
функция WaitNamedPipe возвращает значение FALSE и функция
GetLastError вернет код
ERROR
_
PIPE
_
CONNECTED
Поэтому
WaitNamedPipe нужно вызывать только после соединения сервера с каналом посредством функции ConnectNamedPipe