Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение списка параметров динамически загружаемой функции


Anet ©   (2003-04-28 10:31:00) 

Как это сделать? Заранее спасибо


Digitman   (2003-04-28 15:07:00) [1]


> Anet


ну а зачем тебе параметры, если в общем случае без документации производителя ты не имеешь ни малейшего представления о функц-ти и условиях применения той ф-ции , параметры которой ты пытаешься определить ?


Игорь Шевченко   (2003-04-28 13:17:00) [2]

Anet (28.04.03 12:54)


> 1) получить список функций из ДЛЛ (это уже реализовано)
> 2) получить для каждой функции количество и размер параметров.
> Все


Второе, в общем случае, НИКАК.


Anet   (2003-04-28 13:11:00) [3]

Шевченко спасибо!
Но может кто расскажет больше


Anet   (2003-04-28 12:54:00) [4]

Хм, как бы это объяснить. В общем зря я о форвардинге. Задача такая:
1) получить список функций из ДЛЛ (это уже реализовано)
2) получить для каждой функции количество и размер параметров. Все


Digitman   (2003-04-28 12:47:00) [5]


> форвардинг


при форвардинге декларация ф-ции заранее известна, иначе это не форвардинг в классическом (для Win32) смысле... или я ничего не понял из твоего вопроса


Proc(A,B:Byte)


разве это не декларация ?


Anet   (2003-04-28 12:40:00) [6]


> Поделив на 4 получается количество аргументов.


А где можно узнать размер каждого параметра? (неужели всегда 4)


Игорь Шевченко   (2003-04-28 12:34:00) [7]

Если вызываемая функция имеет соглашение stdcall, то смотреть по ее листингу или отладчиком, сколько байт она прибавляет к стеку в команде ret.
Поделив на 4 получается количество аргументов.


Anet   (2003-04-28 12:04:00) [8]


> Digitman © (28.04.03 11:47)
> Программно ? Считай, что - никак.
> А зачем ?

Необходимо осуществить форвардинг функций. Программа вызывает фунцию Proc(A,B:Byte) из библиотеки, кот. в свою очередь обращается к другой библиотеке. Я понимаю, что искать надо где-то в регистрах - но Асм, к сожалнию, не моя стихия


N167   (2003-04-28 11:53:00) [9]

В общем случае - действительно, никак


Digitman   (2003-04-28 11:47:00) [10]

Программно ? Считай, что - никак.
А зачем ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо