Неудачное обращение к COM порту со стороны разных потоков (меняющийся дескриптор)
Win32 API2 com-portа меняющийся дескриптор многопоточность недопустимый дескриптор неизвестная библиотека
Последовательность моей работы: 1) с помощью CreateFile получаю дескриптор; 2) закрываю порт CloseHandle; 3) Открываю порт с помощью esp_open; 4) К-либо операция обмена данными с помощью ф-ций esp_read_write; 5) Закрываю порт CloseHandle, надеясь, что дескриптор не изменяется при реинициализациях;
Проблема состоит в том, что дескриптор HANDLE COM (объявленный глобально) как раз и меняется. CloseHandle иногда дает исключение "недопустимый дескриптор", или иногда до нее GetLastError возвращает 6 как результат неудачной реинициализации порта с помощью esp_open). К портам обращаюся с разных потоков (в каждое конкретное время с портом работает только один поток).
Прошу меня простить за невысокий уровень. Я буду рад любому ходу мыслей, который бы помог мне разобраться в проблеме (не зацикливался бы всецело на общих положениях).
Порты автоматически закроются при закрытии приложении/выгрузке этой библиотеки. Порт открыть 2 раза невозможно - это не шаред ресурс. "Подбором" хендлов ничего хорошего сделать не получится, а вот навредить - оччень вероятно (хотя микрософт как могла позаботилась о таких случаях, но всего учесть нереально).