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
例外说明
PeekNamedPipe功能是类似ReadFile函数,有以下例外:
数据读取与CreateNamedPipe指定的模式。例如,与PIPE_TYPE_MESSAGE创建一个管道| PIPE_READMODE_MESSAGE。如果你改变模式与SetNamedPipeHandleState PIPE_READMODE_BYTE的,ReadFile函数将读取的字节模式,但PeekNamedPipe将继续在消息模式读取。
从管道读取数据不会被删除,从管道的缓冲区。
函数可以返回有关管内容的其他信息。
该函数总是返回立即在单线程应用程序,即使是在管道中没有数据。等待一个命名管道句柄(阻塞或非阻塞)模式,在功能上没有影响。
注意的PeekNamedPipe功能可以阻止线程执行任何I / O功能可以称为同步处理时,在一个多线程的应用程序相同的方式。为了避免这种情况,使用异步I / O创建一个管道句柄
如果指定的句柄是一个字节的只读模式命名管道句柄,函数读取所有可用的字节在nBufferSize指定的大小。为命名管道句柄消息只读模式,函数读取管道中的下一个消息。如果消息是较大比nBufferSize,该函数返回TRUE读取指定的字节数。在这种情况下,lpBytesLeftThisMessage将收到的消息中剩余的字节数。