timeout в ReadFile
От: ARDCpp Россия  
Дата: 10.12.08 11:49
Оценка:
Привет.

Есть некая функция, в теле которой проиходит подключение к COM-порту и считывание данных с устройства, подключенного к этому порту.
Некоторая часть кода:
DWORD CheckDevice(int PortNum)
{
    char port[16] = {0};
    sprintf(port, "\\\\.\\COM%d", PortNum);
    DWORD result;
    DWORD size = 512, n = 0;
    char * buffer = new char[size];
    memset(buffer, 0, size);

        // ..........

    hPort  = CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if(hPort)
    {
        ReadFile (hPort, buffer, size, &n, NULL);

                //..............
    }
    else
    {
        result << INVALID_HANDLE_VALUE;
    }
        delete [] buffer;
    return result;
}

Сие мега устройство, к которому происходит коннект, может сильно тупить и иногода ReadFile зависает на неопределенный период.
Можно ли установить таймаут, аля как в сокетах (если данные не пришли за время t, то идем дальше, а не висим 1,5 часа)?


11.12.08 00:36: Перенесено модератором из 'C/C++' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.