Сообщение 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.
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, к моему вопросу имеет весьма косвенное отношение.
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, к моему вопросу имеет весьма косвенное отношение.