|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.08.2009, 19:17 | #1 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Есть ли у LoadLibrary и FreeLibrary побочный эффект?
Такой вопросец: допустим при старте ОС загружается "kernel32.dll", и я могу добраться до её функций с помощью GetModuleHandle и GetProcAddress.
Но вот есть некая стандартная dll, и неизвестно - загруженна она в память или нет. Почему-то мне помнится (а откуда - непомнится), что вызов LoadLibrary приводит к: - Загрузке библиотеки, если она не загружена - А если загружена - побочного эффекта (перезагрузки) не происходит. А FreeLibrary: - Если ни один процесс не использует бтблтотеку, она выгружается - Если ещё кто-то использует - то нет. Опять же без побочного эффекта. Это так? Память не утекает? Можно не делать проверку на наличие в памяти модуля? |
23.08.2009, 19:34 | #2 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
библиотека выгружается из памяти текущего процесса, память других процессов не изменяется и они даже ничего не узнают об этом. |
|
23.08.2009, 19:39 | #3 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Ага, там вроде счётчик какой-то есть, который считает число пользователей библиотеки.
Тогда ещё такая проблема: есть адекватный указатель на процедуру PROC ли FARPROC и я знаю сколько аргументов, и какого типа принимает API функция, как сделать call? |
23.08.2009, 19:56 | #4 | ||
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
Цитата:
push param3 push param2 push param1 call adres порядок аргументов зависит от типа вызова, в 99% случаев это stdcall, параметры наоборот. Последний раз редактировалось rpy3uH; 23.08.2009 в 19:59. |
||
23.08.2009, 20:03 | #5 | |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Цитата:
Можно и так, как я понял: Код:
И, раз вы тут, можно ещё вопрос - кроме инфы из справочника, нет больше способов узнать сколько и какого типа аргументы принимает функция? (Вроде нет, но IDA, к примеру, устанавливает это число). Последний раз редактировалось BaronTreep; 23.08.2009 в 20:06. |
|
23.08.2009, 20:52 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
количество параметров можно определить по первых и последний командам функции (например, по команде retn, по моему IDA так и определяет), тип параметров можно определить только исследовав сам код функции.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
преобразование переменной AnsiString в PAnsiChar для использования в процедуре loadlibrary | The Best | Общие вопросы Delphi | 2 | 12.07.2009 20:42 |
Эффект бегущей единицы | OLV_Nikon | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 21.11.2008 09:10 |
Эффект пулемета | Titan123 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 5 | 13.10.2008 13:46 |
Эффект нажатия | SeregaIRK | Общие вопросы Delphi | 2 | 17.09.2008 17:47 |