Hello Olga!
02 Sep 06 20:43, Olga Nonova wrote to Dimmy Timchenko:
DT>> Hу, возможно, не проверял. :) Из дос-задачи точно работало, но DT>> там была _сериализация_: если я "занял" COM-порт, то другая DT>> задача к нему доступа не получала, пока я не закрою первую.
ON> И это очень хорошо, что _сериализация_! Сколько сразу исчезает ON> трудноуловимых глюков со множественным доступом к единственному ON> каналу!
Простейший вид синхронизации доступа к ресурсу - захват по первому обращению, освобождение по окончании задачи.
DT>> А между DLL и EXE разницы по защите быть не должно - какая DT>> разница, тот же пользовательский код.
ON> Разница в том, что из больших пакетов разработки С++ или Delfi убрали ON> как класс оператор обращения к порту. Приходилось писать маленькую ON> .DLL на другом софте, в котором эти операторы еще существовали.
А ну-ка, какой это вдруг оператор обращения к портам _был_ в C++?
Вы не станете же отрицать, что визуальная студия - это самый большой пакет разработки под винды? Так вот, функции _inp/_inpw/_inpd и соответствующие три штуки _outp как были в Microsoft run-time library, так там и присутствуют, в любом визуальном С/С++. Вот только не помню, оно всегда компилируется в инлайновые команды in/out, или только при включенной оптимизации при выполнении Build Release, но это и не важно.
DT>> Hо вот в той же XP работает DLPORTIO.SYS + DT>> DLPORTIO.DLL. Интересно бы глянуть на исходники.
ON> Hе знаю. Просто написала свою .DLL, которая производит обращения к ON> COM-портам как файлам, через win32 API. Поимела ту же самую ON> _сериализацию_, что есть очень хорошо.
Здесь это чуть посложнее, чем в ДОС-окне. Я подробностей не помню, но там должны быть вызовы по типу open и close, первый захватывает порт, второй освобождает.
Всего доброго!
А. Забайрацкий.