Информация об изменениях

Сообщение Re[2]: Запрет выгрузки dll до момента освобождения последнег от 25.10.2018 21:26

Изменено 25.10.2018 21:40 Aniskin

Re[2]: Запрет выгрузки dll до момента освобождения последнего объекта из dll
Здравствуйте, bnk, Вы писали:

bnk>Похоже на какой-то косяк при подсчете ссылок (как именно ты реализовал WM_GETOBJECT/IAccessible)


Стандартно:

Accessible := TTreeViewAccessible.Create(Self);
Result := LresultFromObject(IID_IAccessible, AWParam, Accessible);

bnk>Когда система хочет выгрузить DLL, она ее предварительно спрашивает, "можно ли"? (DllCanUnloadNow)?


У меня же не COM сервер, и dll загружена не COM системой. COM вообще ни чего не знает о моей dll.
Re[2]: Запрет выгрузки dll до момента освобождения последнег
Здравствуйте, bnk, Вы писали:

bnk>Похоже на какой-то косяк при подсчете ссылок


Если бы был косяк с подсчетом ссылок на моей стороне, то объект просто бы терялся и была бы утечка памяти. Проблема возникает при OleUninitialize, т.е. (предполагаю что) COM освобождает ссылку на мой объект в то время как dll уже выгружена.

bnk>как именно ты реализовал WM_GETOBJECT/IAccessible


Стандартно:

Accessible := TTreeViewAccessible.Create(Self);
Result := LresultFromObject(IID_IAccessible, WParam, Accessible);

bnk>Когда система хочет выгрузить DLL, она ее предварительно спрашивает, "можно ли"? (DllCanUnloadNow)?


У меня же не COM сервер, и dll загружена не COM системой. COM вообще ни чего не знает о моей dll.

bnk>К сожалению, я в Delphi не в зуб ногой, как починить, посоветовать не смогу.


Дело в общем то не в Delphi. То, на чем написана dll, к моему вопросу имеет весьма косвенное отношение.