Вызов метода Delphi-интерфейса из ассемблера

Тема в разделе "WASM.BEGINNERS", создана пользователем gershkovich, 28 фев 2010.

  1. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Всем привет!

    Делаю плагин для AIMP2 на Delphi. На Delphi плагин получаеццо больше 300к.
    Если вставлю окно конфигурации, то все 600к.
    Хочу переделать плагин на ассемблере (FASM). Разница в размере DLL-ек - 100 раз (!)

    Но проблема в следующем:

    AIMP предоставляет доступ к своим функциям через контроллер IAIMP2Controller
    (ссылка на него передается в плагин при инициализации плагина)

    IAIMP2Controller объявлен как интерфейс:
    Код (Text):
    1. IAIMP2Controller = interface
    2.   function IsUnicodeVersion: Boolean; stdcall; // Must be True
    3.   function AIMP_CallBack_Set(dwCBType: DWORD; Proc: Pointer; User: DWORD): Boolean; stdcall;
    4.   ...
    5.   ...
    6.   ...
    7. end;
    Вопрос - имея ссылку на интерфейс, как вызвать нужный метод из ассемблера ?

    Заранее спасибо.

    ЗЫ запостил этот вопрос и на делфийский форум
    http://forum.vingrad.ru/forum/topic-292833.html
     
  2. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Интерфейс объявляется так
    Код (Text):
    1. interface IAIMP2Controller,\
    2.           <имя метода 1>,\
    3.           <имя метода 2>,\
    4.           ...
    5.           <имя метода n>
    Метод вызывается так
    Код (Text):
    1. cominvk <указатель на IAIMP2Controller>,<имя метода>,<параметры>
     
  3. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Здесь пример на FASM`е (только там IWebBrowser).
     
  4. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Воистину RTFM!
    Все это в хелпе FASM-а есть оказываеццо.

    Спасибо!
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    gershkovich Просто надо знать кодовое слово : COM-интерфейс. Просто тут не обычные функции вызываемые через call, а хитрая кухня которую я знаю только в теории, например :)