CallNamedPipe

【勇芳软件工作室】汉化HomePreviousNext

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无法立即打开管道),TransactNamedPipeCloseHandle功能。CreateFile的访问标志为GENERIC_READ | GENERIC_WRITE,继承句柄标志为FALSE,共享模式为零(表示此管道实例不共享)。

如果由服务器进程写入管道的消息长于【nOutBufferSize】CallNamedPipe返回FALSE,GetLastError返回ERROR_MORE_DATA。消息的其余部分被丢弃,因为CallNamedPipe在返回之前关闭管道的句柄。

如果管道是字节型管道,CallNamedPipe将失败。

也可以看看

CloseHandle, CreateFile, CreateNamedPipe, TransactNamedPipe, WaitNamedPipe