powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / FreeLibrary
7 сообщений из 7, страница 1 из 1
FreeLibrary
    #33717399
KVAru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

Загружаю библиотеку LoadLibrary(Lib), после этого загружаю функцию GetProcAddress из этой библиотеки и она долго выполняется, после этого по отдельной кнопке я делаю FreeLibrary(Lib).
FreeLibrary - выгружает истину (типа выгрузилась библиотека), но на самом деле код функции загруженной из этой библиотеки исполняется.

Подскажите как мне остановить эту функцию, если библиотека стороннего разработчика и я не могу добраться до ее кода???
...
Рейтинг: 0 / 0
FreeLibrary
    #33717450
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KVAru
Подскажите как мне остановить эту функцию, если библиотека стороннего разработчика и я не могу добраться до ее кода???

Попробуй запустить в отдельном потоке и прибить вместе с потоком
...
Рейтинг: 0 / 0
FreeLibrary
    #33717474
KVAru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под настольный компьютер так и делал вот под Pocket не выходит. Нужна альтернатива.
...
Рейтинг: 0 / 0
FreeLibrary
    #33717549
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KVAruПод настольный компьютер так и делал вот под Pocket не выходит. Нужна альтернатива.

Таких вопросов не возникало, но я бы начал с этого:

авторhe FreeLibraryAndExitThread function decrements the reference count of a loaded dynamic-link library (DLL) by one, and then calls ExitThread to terminate the calling thread. The function does not return.

The FreeLibraryAndExitThread function gives threads that are created and executed within a dynamic-link library an opportunity to safely unload the DLL and terminate themselves.

VOID FreeLibraryAndExitThread(

HMODULE hLibModule, // dynamic-link library whose reference count is to decrement
DWORD dwExitCode // exit code for thread
);


Parameters

hLibModule

Specifies the dynamic-link library module whose reference count the function decrements.

dwExitCode

Specifies the exit code for the calling thread.



Return Values

The function has no return value. The function does not return. Invalid hLibModule handles are ignored.

Remarks

The FreeLibraryAndExitThread function is implemented as:

FreeLibrary(hLibModule);
ExitThread(dwExitCode);


Refer to the reference pages for FreeLibrary and ExitThread for further information on those functions.
...
Рейтинг: 0 / 0
FreeLibrary
    #33717689
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KVAru Загружаю библиотеку LoadLibrary(Lib), после этого загружаю функцию GetProcAddress из этой библиотеки и она долго выполняется, после этого по отдельной кнопке я делаю FreeLibrary(Lib).
FreeLibrary - выгружает истину (типа выгрузилась библиотека), но на самом деле код функции загруженной из этой библиотеки исполняется.


Я уж не помню когда там FreeLibrary возвращает истину, но то что она не гарантирует выгрузку библиотеки из памяти, это точно.

Она только уменьшает счетчик ссылок на библиотеку, а вот если он становится нулем, тогда библиотека выгружается. Так что как ни странно, гарантированно выгрузить библиотеку с помощью FreeLibrary невозможно (без ошибок в приложении).

Вот дока по ней :

FreeLibrary

The FreeLibrary function decrements the reference count of the loaded dynamic-link library (DLL). When the reference count reaches zero, the module is unmapped from the address space of the calling process and the handle is no longer valid.

BOOL FreeLibrary(
HMODULE hModule
);

Parameters
hModule
[in] Handle to the loaded DLL module. The LoadLibrary or GetModuleHandle function returns this handle.
Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Ну вот, как видно, она вернет FALSE только если ей передаешь неправильный HANDLE и она fails.


KVAru
Подскажите как мне остановить эту функцию, если библиотека стороннего разработчика и я не могу добраться до ее кода???

Надо использовать соответствующий API этой библиотеки. Если его нет, то некриво это никак не сделать.

Ищи другой путь для этого, путь, который ты подразумеваешь, неправильный.
Нельзя работающую библиотеку взять и выгрузить из памяти.
...
Рейтинг: 0 / 0
FreeLibrary
    #33717690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфю, блин, надо было страницу ли стануть вниз, уже запостили доку -то ...
...
Рейтинг: 0 / 0
FreeLibrary
    #33718060
KVAru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, я так и думал.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / FreeLibrary
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]