Я смущен Windows API. Я пытаюсь увидеть, остались ли байты в анонимном канале, используя PeekNamedPipe
, Эта функция не работает, но GetLastError()
не возвращает ошибку.
Соответствующая часть моего кода
if( !PeekNamedPipe( handle, NULL, 0, NULL, &numBytesAvailable, NULL ) )
throw PeekNamedPipeException( "GetLastError() returned " + std::to_string( GetLastError() ) );
Это выдает ошибку, генерирующую следующее сообщение:
terminate called after throwing an instance of 'PeekNamedPipeException'
what(): GetLastError() returned 0
Но если PeekNamedPipe
выходит из строя, GetLastError
не должен возвращать 0 (== ERROR_SUCCESS
), право?
Спасибо за помощь!
Это, вероятно, потому что больше системных функций вызывается (за кулисами) между PeekNamedPipe
и ваш звонок GetLastError
,
Сохранить значение из GetLastError
во временной переменной, и используйте это при построении строки.
Других решений пока нет …