Цитата(aaarrr @ Dec 25 2016, 10:51)

Есть такая мысль, что (GENERIC_READ + GENERIC_WRITE) в вашем случае оказывается не равно (GENERIC_READ | GENERIC_WRITE).
мысль одобрямс.
Если макро содержит только один взведенный бит, то плюс == OR.
(нельзя допускать ошибок когда в списке на + ошибочно 2 раза указана одна и таже маска)
А вот если макро-маски "сборные" - то от плюсования лучше отказаться.
Цитата(vazz @ Jan 6 2015, 16:31)

Раньше никогда не сталкивался с необходимостью осваивать WinAPI в части работы с COM-портами,
. . . .
Успешно открываю порт
Код
. . . .
handle = kernel32.CreateFileA("\\\\.\\COM" .. comid, GENERIC_READ+GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0)
. . . .
end[/code]
. . . .
Не понял, какой комилятор и какой версии используете. И какой "target" компиляции (оконное, консольное итп)
Открытие порта в консольном Win32 приложении на чтение и запись
hport = CreateFile( /*(LPCWSTR)*/ cfg_com1, GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
cfg_com1 - символьный массив, содержащий
строку с именем порта "COM1"
1. Обратите внимание на кодировку символов. Используйте ASCII однобайтные.
Для начала поотключайте в опциях проекта всякие юникоды и иже с ними.
из #include уберите <tchar.h>
2. Как Вам советовали - убрать (пока) OVERLAPPED
3. Посмотрите исходники множества библиотек классов для работы с COM-портами. Если класс "раздутый" - даже не смотрите.
исходник класса должен быть порядка 3 - 10 страниц исходника (из расчета 65 строк). Если у класса раздутая "родсловная" - найух его.
Родственные связи должны быть только на вызовы Win32API