CallNamedPipeA 函数 (winbase.h)

连接到消息类型管道 (,并等待管道实例不可用) ,写入管道并从管道读取,然后关闭管道。

语法

BOOL CallNamedPipeA(
  [in]  LPCSTR  lpNamedPipeName,
  [in]  LPVOID  lpInBuffer,
  [in]  DWORD   nInBufferSize,
  [out] LPVOID  lpOutBuffer,
  [in]  DWORD   nOutBufferSize,
  [out] LPDWORD lpBytesRead,
  [in]  DWORD   nTimeOut
);

参数

[in] lpNamedPipeName

管道名称。

[in] lpInBuffer

要写入管道的数据。

[in] nInBufferSize

写入缓冲区的大小(以字节为单位)。

[out] lpOutBuffer

指向接收从管道读取的数据的缓冲区的指针。

[in] nOutBufferSize

读取缓冲区的大小(以字节为单位)。

[out] lpBytesRead

指向变量的指针,该变量接收从管道读取的字节数。

[in] nTimeOut

等待命名管道可用的毫秒数。 除了数值之外,还可以指定以下特殊值。

含义
NMPWAIT_NOWAIT
0x00000001
不等待命名管道。 如果命名管道不可用,函数将返回错误。
NMPWAIT_WAIT_FOREVER
0xffffffff
无限期等待。
NMPWAIT_USE_DEFAULT_WAIT
0x00000000
使用对 CreateNamedPipe 函数的调用中指定的默认超时。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

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

注解

如果 CreateFile 无法立即) 、TransactNamedPipeCloseHandle 函数打开管道,则调用 CallNamedPipe 等效于调用 CreateFile (或 WaitNamedPipe。 使用访问标志GENERIC_READ调用 CreateFile |GENERIC_WRITE,以及 FALSE 的继承句柄标志。

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

Windows 10版本 1709:管道仅在应用容器中受支持;即,从一个 UWP 进程到属于同一应用的另一个 UWP 进程。 此外,命名管道必须为管道名称使用 语法 \\.\pipe\LOCAL\

示例

有关示例,请参阅 命名管道上的事务

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseHandle

CreateFile

CreateNamedPipe

管道函数

管道概述

TransactNamedPipe

WaitNamedPipe