複製鏈接
請複製以下鏈接發送給好友

PeekNamedPipe

鎖定
預覽一個管道中的數據,或取得與管道中的數據有關的信息。
中文名
PeekNamedPipe
預覽一個
管道中的數據
會設置
GetLastError.
Long
非零表示成功
失敗

PeekNamedPipe返回值

BooL,非零表示成功,零表示失敗。會設置GetLastError.

PeekNamedPipeVB聲明

Declare Function PeekNamedPipe Lib "kernel32" Alias "PeekNamedPipe" (ByVal hNamedPipe As Long, lpBuffer As Any, ByVal nBufferSize As Long, lpBytesRead As Long, lpTotalBytesAvail As Long, lpBytesLeftThisMessage As Long) As Long

PeekNamedPipe參數表

參數
類型及説明
hNamedPipe
Long,指定一個管道的句柄。這並不一定是某個命名管道的句柄——匿名管道同樣適用
lpBuffer
Any,指定要裝載數據的一個緩衝區的頭一個字符。可以為零(使用ByVal 0&)
nBufferSize
Long,lpBuffer緩衝區長度
lpBytesRead
Long,保存裝載到緩衝區的字符數量
lpTotalBytesAvail
Long,保存管道中可用的字符數量
lpBytesLeftThisMessage
Long,保存這次讀操作後仍然保留在消息中的字符數。只能為那些基於消息的命名管道設置

PeekNamedPipe註釋

由這個函數讀入的數據實際並不能從管道中刪除。如果要對一個管道進行輪詢,瞭解是否有可讀數據,那麼使用這個函數特別理想.

PeekNamedPipeVC++聲明

BOOL WINAPI PeekNamedPipe(__in HANDLE hNamedPipe, //管道句柄__out_opt LPVOID lpBuffer, //讀取輸出緩衝區,可選__in DWORD nBufferSize, //緩衝區大小__out_opt LPDWORD lpBytesRead, //接收從管道中讀取數據的變量的指針,可選__out_opt LPDWORD lpTotalBytesAvail, //接收從管道讀取的字節總數__out_opt LPDWORD lpBytesLeftThisMessage);

PeekNamedPipe註釋

hNamedPipe [in]
管道句柄。這個參數可以是一個命名管道實例句柄,返回,由CreateNamedPipe或CreateFile函數,或者它可以是一個匿名管道的讀端句柄,返回由CREATEPIPE功能。句柄必須有GENERIC_READ權限的管道。
lpBuffer [out, optional]
接收從管道讀取數據的緩衝區的指針。如果沒有數據要讀取,此參數可以為NULL。
nBufferSize [in]
lpBuffer參數以字節為單位,由指定的緩衝區大小。如果lpBuffer是NULL,則忽略此參數。
lpBytesRead [out, optional]
接收從管道中讀取的字節數的變量的指針。此參數可以為NULL,如果沒有數據要讀取。
lpTotalBytesAvail [out, optional]
一個指針變量,接收從管道讀取的字節總數。此參數可以為NULL,如果沒有數據要讀取。
lpBytesLeftThisMessage [out, optional]
指向剩餘的字節數的變量的指針消息。此參數將是零字節類型的命名管道或匿名管道。此參數可以為NULL,如果沒有數據要讀取。

PeekNamedPipe返回值

如果函數成功,返回值為非零。
如果函數失敗,返回值是零。為了獲得更多錯誤信息,調用GetLastError。

PeekNamedPipe例外説明

PeekNamedPipe功能是類似ReadFile函數,有以下例外:
數據讀取與CreateNamedPipe指定的模式。例如,與PIPE_TYPE_MESSAGE創建一個管道| PIPE_READMODE_MESSAGE。如果你改變模式與SetNamedPipeHandleState PIPE_READMODE_BYTE的,ReadFile函數將讀取的字節模式,但PeekNamedPipe將繼續在消息模式讀取。
從管道讀取數據不會被刪除,從管道的緩衝區。
函數可以返回有關管內容的其他信息。
該函數總是返回立即在單線程應用程序,即使是在管道中沒有數據。等待一個命名管道句柄(阻塞或非阻塞)模式,在功能上沒有影響。
注意的PeekNamedPipe功能可以阻止線程執行任何I / O功能可以稱為同步處理時,在一個多線程的應用程序相同的方式。為了避免這種情況,使用異步I / O創建一個管道句柄
如果指定的句柄是一個字節的只讀模式命名管道句柄,函數讀取所有可用的字節在nBufferSize指定的大小。為命名管道句柄消息只讀模式,函數讀取管道中的下一個消息。如果消息是較大比nBufferSize,該函數返回TRUE讀取指定的字節數。在這種情況下,lpBytesLeftThisMessage將收到的消息中剩餘的字節數。