Разработка многопоточного C++ драйвера (Native API) для интеграции купюроприемника CCNet с 1С:Предприятие 8

Ссылка на работу
image image image image
О проекте: Был разработан низкоуровневый драйвер для обмена данными через COM-порт (внешняя компонента) по технологии 1С:Native API на языке C++ (MSVC 2022). Компонента кроссплатформенная и бинарно совместима как с 32-битными (x86), так и с 64-битными (x64) релизами платформы 1С (включая Обычное приложение и Управляемые формы «Такси»). Плюсы проекта: Стандартные COM-объекты (например, .NET SerialPort) при вызове асинхронных событий вызывают микросбои потоков и аварийно роняют процесс 1cv8.exe в Управляемых формах. Данная компонента изолирует потоки ввода-вывода от ядра 1С, обеспечивая 100% отказоустойчивость. Технические вызовы, которые были успешно решены: Низкоуровневая асинхронность: Создан фоновый C++ поток (std::thread), выполняющий непрерывный неблокирующий опрос COM-порта по WinAPI-таймаутам (COMMTIMEOUTS) с защитой ресурсов через мьютексы (std::mutex), что исключило зависание интерфейса 1С. Бинарная совместимость: Реализовано строгое выравнивание стека (__stdcall / ADDIN_API) и очистка таблицы экспорта линкера от Name Mangling через .def файлы. Безопасная работа с кучей: Реализовано динамическое выделение памяти для строк встроенного языка через менеджер памяти платформы (IMemoryManager::AllocMemory), что полностью исключило утечки памяти и Heap Corruption при валидации компоненты. Асинхронные уведомления: Данные из порта переводятся в HEX-строку и мгновенно передаются в 1С через механизм ExternalEvent (обрабатываются в процедуре ВнешнееСобытие формы).
https://github.com/AntonLemur/DeviceLink/tree/main/DeviceLink