预览一个管道中的
数据,或取得与
管道中的数据有关的信息。
返回值
BooL,非零表示成功,零表示失败。会设置
GetLastError.
VB声明
参数表
注释
由这个函数读入的数据实际并不能从管道中删除。如果要对一个管道进行轮询,了解是否有可读数据,那么使用这个函数特别理想.
VC++声明
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);
注释
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,如果没有数据要读取。
返回值
如果函数成功,返回值为非零。
如果函数失败,返回值是零。为了获得更多错误信息,调用GetLastError。
例外说明
PeekNamedPipe功能是类似ReadFile函数,有以下例外:
数据读取与CreateNamedPipe指定的模式。例如,与PIPE_TYPE_MESSAGE创建一个管道| PIPE_READMODE_MESSAGE。如果你改变模式与SetNamedPipeHandleState PIPE_READMODE_BYTE的,ReadFile函数将读取的字节模式,但PeekNamedPipe将继续在消息模式读取。
从管道读取数据不会被删除,从管道的缓冲区。
函数可以返回有关管内容的其他信息。
该函数总是返回立即在单线程应用程序,即使是在管道中没有数据。等待一个命名管道句柄(阻塞或非阻塞)模式,在功能上没有影响。
注意的PeekNamedPipe功能可以阻止线程执行任何I / O功能可以称为同步处理时,在一个多线程的应用程序相同的方式。为了避免这种情况,使用异步I / O创建一个管道句柄
如果指定的句柄是一个字节的只读模式命名管道句柄,函数读取所有可用的字节在nBufferSize指定的大小。为命名管道句柄消息只读模式,函数读取管道中的下一个消息。如果消息是较大比nBufferSize,该函数返回TRUE读取指定的字节数。在这种情况下,lpBytesLeftThisMessage将收到的消息中剩余的字节数。