![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определить параметры для экспортируемой функции
DelphiLexx © (2004-10-21 18:15:00)С помощью программы Depends или ProcessInfo можно узнать какие функции экспортирует dll-файл. Как узнать какие нужны параметры и тип этих параметров для экспортируемой функции.
Т.е. есть example.dll и он предоставляет следующие ф-ции:
func1;
func2;
...
funcn;
Как узнать параметры и их тип, скажем, для
SammIk (2004-10-22 19:01:00) [1]Вот ежелиб, в функцию передовалось 8 бит и нибитом больше нельзы было прочитать, то тогда я бы сказал ДА, а так это просто логика программы.
А передается в любом случае 32бита, не больше не меньше.
Разве что ммх регистры использовать.
Digitman (2004-10-22 09:43:00) [2]
> Дык всеравно, регистор-то 32битный и передается дворд. как
> не крути
ну где ты видишь, что передается DWORD ? BYTE передается !
старшее слово и старший байт мл.слова регистра EAX даже не затрагивается при передаче/приеме параметра
BiN (2004-10-22 09:23:00) [3]как вариант для общегослучая можно предложить Advanced Dll Wrapper v0.0001 by 90210 /HI-TECH на http://www.wasm.ru/toollist.php?list=11
SammIk (2004-10-22 09:17:00) [4]Дык всеравно, регистор-то 32битный и передается дворд. как не крути.
Да, базару нет, замудрил я со стеко(не допил, чтоли)
Digitman (2004-10-22 09:09:00) [5]
> SammIk © (22.10.04 08:50) [11]
> можно положить в стек и не дворд
как раз со стеком-то и нельзя манипулировать иначе как модифицируя ESP на величину кратную DWORD
а вот такой пример как раз и иллюстрирует необязательность передачи параметра искл-но как DWORD
procedure myproc; export;
asm
movsx ax, al
end;
var
x: integer;
..
asm
mov al, 255
call myproc
movsx [x], ax
end
showmessage(inttostr(x)); // -1
SammIk (2004-10-22 08:50:00) [6]Хотя, да. Тут я отступлю, можно положить в стек и не дворд))
Digitman (2004-10-22 08:48:00) [7]
> SammIk © (22.10.04 08:37) [9]
> вы же не будете сопротевлятся, что передаются дворды?
еще как буду.
никто и ничто не обязывает разработчика библиотеки придерживаться каких-либо станд.соглашений о вызовах
SammIk (2004-10-22 08:37:00) [8]Но вы же не будете сопротевлятся, что передаются дворды?))
А уж как процедура их воспринемает, это вторая строчка моего поста
Digitman (2004-10-22 08:32:00) [9]
> SammIk © (22.10.04 07:01) [7]
> всегда будут передоватся в ф-ю значением типа DWORD
с чего ты взял, что именно DWORD ?
предположим, параметр передается через EAX, но это отнюдь не означает, что в теле вызванной ф-ции будет использовано полное 32-разрядное значение этого регистра - не исключено, что будет использовано только значение AL
SammIk (2004-10-22 07:01:00) [10]2 [6] Не согласен, всегда будут передоватся в ф-ю значением типа DWORD.
А уж там, дело времени, определить что это конкретно, указатель или число.
Игорь Шевченко (2004-10-21 21:53:00) [11]
> Как узнать какие нужны параметры и тип этих параметров для
> экспортируемой функции.
Никак
clickmaker (2004-10-21 19:23:00) [12]8. Забить на всё это, в т.ч. и на пункт 7 и идти пить пиво :)
XProger (2004-10-21 19:07:00) [13]7. Забить на всё это, и пасать свою длл :)
GuAV (2004-10-21 18:53:00) [14]6. Найти примеры использования и по их коду попробовать понять
clickmaker (2004-10-21 18:43:00) [15]5. Дизасемблировать и по логике кода попробовать понять
GuAV (2004-10-21 18:37:00) [16]1. Посмотреть в документации
2. Посмотреть в исходниках/header'ах
3. Спосить у разработчика
4. Угадать