FT_Write
возвращает статус, отличный от FT_OK
при «критических» ошибках.
Эта функция (а также FT_Read
) может вернуть FT_OK
и ввести *lpdwBytesWritten
любое число от 0
(время ожидания) до dwBytesToWrite
(передача завершена).
Промежуточные значения означают, что не все данные, переданные еще, но процесс передачи может быть продолжен.
Контур передачи может выглядеть следующим образом:
BYTE *buf = pointer_to_data;
DWORD len = length_of_data;
FT_STATUS status;
DWORD written;
for (;;) {
status = FT_Write(handle, buf, len, &written);
if (status != FT_OK)
return status;
if (written == 0)
return -1; // or FT_OTHER_ERROR if no special timeout handling required
if (written == len)
return FT_OK;
len -= written;
buf += written;
}
См. Также Пример 3, тестовое приложение FT2232C (файл t_titan.cpp, функция DoRxTest
в строке 289)