PeekNamedPipe功能将数据从命名或匿名管道复制到缓冲区,而不从管道中删除。它还返回有关管道中数据的信息。
BOOL PeekNamedPipe(
HANDLE 【hNamedPipe】, | //将管道复制到句柄 |
LPVOID 【lpBuffer】, | //指向数据缓冲区的指针 |
DWORD 【nBufferSize】, | //数据缓冲区的大小(以字节为单位) |
LPDWORD 【lpBytesRead】, | //指向读取字节数的指针 |
LPDWORD 【lpTotalBytesAvail】, | //指向总可用字节数的指针 |
LPDWORD 【lpBytesLeftThisMessage】 | //指向此消息中未读字节的指针 |
); |
参数
【hNamedPipe】
标识管道。该参数可以是CreateNamedPipe或CreateFile函数返回的命名管道实例的句柄,或者它可以是CreatePipe函数返回的匿名管道的读取端的句柄。手柄必须具有对管道的GENERIC_READ访问权限。
【lpBuffer】
指向缓冲区,接收从管道读取的数据。如果不读取数据,此参数可以为NULL。
【nBufferSize】
指定由【lpBuffer】参数指定的缓冲区的大小(以字节为单位)。如果【lpBuffer】为NULL,则忽略此参数。
【lpBytesRead】
指向接收从管道读取的字节数的32位变量。如果不读取数据,此参数可以为NULL。
【lpTotalBytesAvail】
指向一个32位变量,它接收可从管道读取的总字节数。如果不读取数据,此参数可以为NULL。
【lpBytesLeftThisMessage】
指向接收此消息中剩余字节数的32位变量。字节型命名管道或匿名管道的此参数为零。如果不读取数据,此参数可以为NULL。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
PeekNamedPipe与ReadFile功能类似,但有以下例外:
*从管道读取的数据不会从管道缓冲区中删除。
*即使管道中没有数据,该函数也会立即返回。命名管道句柄(阻塞或非阻塞)的等待模式对该函数没有影响。
*该函数可以返回有关管道内容的附加信息。
如果指定的句柄是字节读取模式下的命名管道句柄,则该函数读取所有可用字节,直到【nBufferSize】中指定的大小。对于消息读取模式下的命名管道句柄,该函数读取管道中的下一条消息。如果消息大于【nBufferSize】,则在读取指定的字节数后,该函数将返回TRUE。在这种情况下,【lpBytesLeftThisMessage】将会收到消息中剩余的字节数。
也可以看看
CreateFile, CreateNamedPipe, CreatePipe, ReadFile, WriteFile