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 會在傳回之前關閉管線的句柄。

備註

呼叫 CallNamedPipe 相當於呼叫 CreateFile (或 WaitNamedPipe,如果 CreateFile 無法立即開啟管道) 、TransactNamedPipeCloseHandle 函式。 CreateFile 的存取旗標稱為 GENERIC_READ |GENERIC_WRITE,以及 FALSE 的繼承句柄旗標。

如果管道是位元組類型管道,CallNamedPipe 就會失敗。

Windows 10 版本 1709:管道僅在應用程式容器內受到支援;亦即,從一個 UWP 進程到另一個屬於相同應用程式的 UWP 進程。 此外,命名管道必須使用管道名稱的語法 \\.\pipe\LOCAL\

範例

如需範例,請參閱 命名管道上的交易

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

CloseHandle

CreateFile

CreateNamedPipe (CreateNamedPipe 函式)

管道函式

管道概觀

TransactNamedPipe

WaitNamedPipe