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
等候命名管道可用的毫秒數。 除了數值之外,還可以指定下列特殊值。
值 | 意義 |
---|---|
|
不會等候命名管道。 如果命名管道無法使用,函式會傳回錯誤。 |
|
無限期等候。 |
|
使用 呼叫 CreateNamedPipe 函式中指定的預設逾時。 |
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
如果伺服器進程寫入管道的訊息超過 nOutBufferSize,CallNamedPipe 會傳回 FALSE,而 GetLastError 會傳回ERROR_MORE_DATA。 訊息的其餘部分會捨棄,因為 CallNamedPipe 會在傳回之前關閉管線的句柄。
備註
呼叫 CallNamedPipe 相當於呼叫 CreateFile (或 WaitNamedPipe,如果 CreateFile 無法立即開啟管道) 、TransactNamedPipe 和 CloseHandle 函式。 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 |
另請參閱
CreateNamedPipe (CreateNamedPipe 函式)