Как: контролировать ход данных в канале? - PullRequest
0 голосов
/ 10 августа 2010

Труба 1 МБ:

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 Ответ

1 голос
/ 10 августа 2010

Перед чтением 4 байтов вы можете прочитать доступные байты, используя PeekNamedPipe

...