Я знаю, что уже немного поздно, но у меня был похожий вопрос к вам, как проверить, открыт ли канал (канал, который я создал с помощью CreateFile) (возможно, другой конец закрыл соединение) и может прочитать и, если это не так, чтобы открыть его снова. Я сделал то, что предложил @Felix Dombek, и я использовал WriteFile, чтобы проверить соединение. Если он вернул 1, это означает, что канал открыт, иначе я снова открыл его, используя CreateFile. Это подразумевает, что ваша труба дуплексная. Вот CreateFile:
hPipe2 = CreateFile(lpszPipename2, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, NULL);
и вот как я проверил соединение:
while(1)
{
bool MessageSent = WriteFile(hPipe2, "Test", 0, &cbWritten, NULL);
if (!(MessageSent))
{
LogsOut("Read pipe has been disconnected");
//Call method to start the pipe again
break;
}
Sleep(200); // I need this because it is a thread
}
У меня это прекрасно работает :) 1007 *