如何:监控管道中的数据进度?

时间:2010-08-09 21:03:48

标签: windows multithreading winapi visual-c++ pipe

有一个1MB的管道:

if (0 == CreatePipe(&hRead,&hWrite,0,1024*1024))
{
printf("CreatePipe failed\n");
return success;
}   

一次发送4000个字节(bytesReq = 4000)

while ((bytesReq = (FileSize - offset)) != 0)
{


//Send data to Decoder.cpp thread, converting to human readable CSV
        if ( (0 == WriteFile(hWrite,
                               readBuff,
                               bytesReq,
                               &bytesWritten,
                               0) ) || 
                               (bytesWritten != bytesReq) )
        {
             printf("WriteFile failed error = %d\n",GetLastError());
             break;
        } 

// Would like to update a status box with the amount of data in the pipe.
I would like to know if and how often it is getting full....



}  

4个字节一次在另一个线程中读取,在管道的另一端。

1 个答案:

答案 0 :(得分:1)

在读取4个字节之前,您可以使用PeekNamedPipe

读取可用字节