CallNamedPipe功能连接到消息类型的管道(并且等待管道的实例不可用),写入管道并从管道读取,然后关闭管道。
BOOL CallNamedPipe(
LPCTSTR 【lpNamedPipeName】, | //指向管道名称的指针 |
LPVOID 【lpInBuffer】, | //指向写缓冲区的指针 |
DWORD 【nInBufferSize】, | //写入缓冲区的大小(以字节为单位) |
LPVOID 【lpOutBuffer】, | //指向读缓冲区的指针 |
DWORD 【nOutBufferSize】, | //读取缓冲区的大小(以字节为单位) |
LPDWORD 【lpBytesRead】, | //指向读取字节数的指针 |
DWORD 【nTimeOut】 | //超时时间,以毫秒为单位 |
); |
参数
【lpNamedPipeName】
指向指定管道名称的以null结尾的字符串的指针。
【lpInBuffer】
指向包含写入管道的数据的缓冲区。
【nInBufferSize】
指定写缓冲区的大小(以字节为单位)。
【lpOutBuffer】
指向接收从管道读取的数据的缓冲区的指针。
【nOutBufferSize】
指定读取缓冲区的大小(以字节为单位)。
【lpBytesRead】
指向接收从管道读取的字节数的32位变量的指针。
【nTimeOut】
指定等待命名管道可用的毫秒数。除了数值之外,还可以指定以下特殊值:
值 | 含义 |
NMPWAIT_NOWAIT | 不等待命名管道。如果命名管道不可用,则该函数返回错误。 |
NMPWAIT_WAIT_FOREVER | 等待无限期 |
NMPWAIT_USE_DEFAULT_WAIT | 使用调用CreateNamedPipe 功能中指定的默认超时时间。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
调用CallNamedPipe相当于调用CreateFile(或WaitNamedPipe,如果CreateFile无法立即打开管道),TransactNamedPipe和CloseHandle功能。CreateFile的访问标志为GENERIC_READ | GENERIC_WRITE,继承句柄标志为FALSE,共享模式为零(表示此管道实例不共享)。
如果由服务器进程写入管道的消息长于【nOutBufferSize】,CallNamedPipe返回FALSE,GetLastError返回ERROR_MORE_DATA。消息的其余部分被丢弃,因为CallNamedPipe在返回之前关闭管道的句柄。
如果管道是字节型管道,CallNamedPipe将失败。
也可以看看
CloseHandle, CreateFile, CreateNamedPipe, TransactNamedPipe, WaitNamedPipe