Мое приложение может переключаться между последовательными и сокетными соединениями, но ни одно из них не может быть открыто одновременно. Поэтому, когда я пытаюсь переключиться между Socket и Serial, я удаляю соединение Socket.
В объекте на основе сокетов используется закрытый класс UsesWinsock (большой призыв к Len Holgate здесь, поскольку это в основном его код (на самом деле это RAII, но я никогда не применял его к WSA, пока не увидел его сделай это)). Это просто вызывает WSAStart и WSACleanUp.
Когда вызывается WSACleanUp, он переходит в NTDLL и ассемблер. @ err, hr дает мне "Область данных, переданная системному вызову, слишком мала", как HRESULT.
Я попытался переместить код: перемещение класса в порядке его наследования приводит к изменению последовательности уничтожения и фактически нарушает функции, чтобы они были последними вызовами в последовательности уничтожения. Ни один не работал.
Я почти уверен, что освободил все, что выделено (есть только 1 сокет и пара событий), и я застрял - это довольно важная проблема для меня.
Google бесполезен, возвращая 4 результата, из которых ни один не решает мою проблему .
Есть предложения?