Приложение Win32 («сервер») отправляет непрерывный поток данных по именованному каналу. GetNamedPipeInfo () говорит мне, что размеры входного и выходного буфера автоматически распределяются по мере необходимости. Канал работает в байтовом режиме (хотя он отправляет блоки данных, размер которых превышает 1 байт (точнее, удваивается)).
Теперь мой вопрос таков: могу ли я каким-то образом проверить, что мое приложение («клиент») не пропускает какие-либо данные при чтении из канала? Я знаю, что эти операции чтения / записи буферизуются, но я полагаю, что буферы не будут расти бесконечно, если клиент не получит данные достаточно быстро. Как узнать, что я что-то пропустил? Сервер (или канал?) Молча отбрасывает данные, которые клиент не читает вовремя?
Кстати, могу ли я рассчитывать на правильное выравнивание данных, которые клиент читает с помощью ReadFile ()? Насколько я понял, ReadFile () может вернуть с меньшим количеством прочитанных байтов, чем указано, то есть NumberOfBytesRead <= NumberOfBytesToRead. Нужно ли проверять каждый раз, когда NumberOfBytesRead кратно sizeof (double)? </p>