COM технология в Fasm

Discussion in 'WASM.WIN32' started by Sergio_Begin, Oct 19, 2006.

  1. Sergio_Begin

    Sergio_Begin New Member

    Blog Posts:
    0
    Joined:
    Oct 19, 2006
    Messages:
    4
    Знающие, помогите...
    Мне нужно создать Dll с использованием com технологий.
    использование COM в fasm очень легкое, а вот создание?
    Помогите примером...
    Заранее спасибо
     
  2. masquer

    masquer wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 13, 2002
    Messages:
    890
    Location:
    Николаев
    Примером? :) На масме это 15 кб кода и с 50 кб инклудов, хоший будет пример.
    А почему тема в бегиннерсах? Это и не каждый адвансед напишет :))
     
  3. Sergio_Begin

    Sergio_Begin New Member

    Blog Posts:
    0
    Joined:
    Oct 19, 2006
    Messages:
    4
    А я в Fasm хочу - больно это красиво получается...
    И вообще решил на него переходить
    А куда еще писать...
     
  4. masquer

    masquer wasm.ru

    Blog Posts:
    0
    Joined:
    Sep 13, 2002
    Messages:
    890
    Location:
    Николаев
    для начала поищи на форуме фасма, может уже есть готовое, если нет, бери код для масма (есть в пакете масм32) и творчески переделывай, заодно изучишь как оно все работает, при этом можно еще запастись книгой типа Inside OLE 2, где про потроха ком рассказывается.

    в WIN32, очевидно, надо было, но уже поздно, модераторы переместят если надо будет
     
  5. Sergio_Begin

    Sergio_Begin New Member

    Blog Posts:
    0
    Joined:
    Oct 19, 2006
    Messages:
    4
    А насчет примера:
    - создание структуры vtable
    - вывод из создателя...
    Я делал так:
    Code (Text):
    1. interface IAniThing,\
    2.              AniProc
    3.              ...
    4.  
    5. proc RealAniProc
    6. ...
    7. endp
    8.  
    9. proc AniCreator
    10.    invoke LocalAlloc, LMEM_FIXED, ...
    11.    mov  [eax+IAniThing#.#AniProc]
    12. endp
    Говорит - ошибка...
     
  6. asmfan

    asmfan New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2006
    Messages:
    1,004
    Location:
    Abaddon
    Code (Text):
    1. mov  [eax+IAniThing#.#AniProc]
    попытка переписать cominvk или comcall из стандартных инклюдов?
     
  7. asmfan

    asmfan New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2006
    Messages:
    1,004
    Location:
    Abaddon
    Думается, по дефолту, должен IUnknown наследоваться...
     
  8. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    Sergio_Begin
    Почитай лучше статьи о СОМ, особенно о том, как он реализуется на чистом си. Там весьма близко к асму.
     
  9. afw2004

    afw2004 New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2006
    Messages:
    14
    COM DLL-ка на фасме. Только не регистрируется сама (нужно вручную). Для теста я поместил контрол на HTML страничку.

    Также выкладываю мои inc файлы (не пользуюсь стандартным com интерфейсом фасма - невдалый он какой-то).
     
  10. afw2004

    afw2004 New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2006
    Messages:
    14
    инклуды
     
  11. Sergio_Begin

    Sergio_Begin New Member

    Blog Posts:
    0
    Joined:
    Oct 19, 2006
    Messages:
    4
    2asmfan:
    Ну, этож для примера, в реализации все будет
    Кстати, я зарегестрировался ;))
     
  12. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    В том-то и дело, это нарушение стандарта. Есть некоторый необходимый минимум для СОМ.
     
  13. opennetworks

    opennetworks New Member

    Blog Posts:
    0
    Joined:
    Oct 20, 2006
    Messages:
    436
    Почему нет SelfRegister для DLL Register Server?

    Кому охота в реестре голыми руками копаться?
     
  14. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    Почему нет? DllRegisterServer.
     
  15. opennetworks

    opennetworks New Member

    Blog Posts:
    0
    Joined:
    Oct 20, 2006
    Messages:
    436
    Вы не поняли....

    Почему в CMyApp.dll нет экспорта
    DllGetClassObject, DllCanUnloadNow,DllRegisterServer,DllUnregisterServer

    с ними удобнее!
     
  16. opennetworks

    opennetworks New Member

    Blog Posts:
    0
    Joined:
    Oct 20, 2006
    Messages:
    436
    ... вопрос не в тему

    А можно ли на FASM реализовать собственный формат файлов?

    (там же есть PE GUI, PE Console и тд...);

    Только не прямым кодом типа

    Code (Text):
    1.  PUSH    CS
    2.  POP     DS
    3.  MOV     DX,000E
    4.  MOV     AH,09
    5.  INT     21
    6.  MOV     AX,4C01
    7.  INT     21
    8.  PUSH    SP
    9.  DB      68
    10.  DB      69
    11.  JNB     0033
    12.  JO      0087
    13.  DB      6F
    14.  DB      67
    15.  JB      007A
    16.  DB      6D
    17.  AND     [BP+DI+61],AH
    18.  DB      6E
    19.  DB      6E
    20.  DB      6F
     
  17. afw2004

    afw2004 New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2006
    Messages:
    14
    Потому что не доделал! Что тут непонятного?

    Выкладываю свои попытки собрать фасмом VxD. (Нерабочий вариант, рабочего пока нет).
     
  18. opennetworks

    opennetworks New Member

    Blog Posts:
    0
    Joined:
    Oct 20, 2006
    Messages:
    436
    это прямой код:dntknw:


    ну, почти.
     
  19. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    opennetworks
    format binary в помощь.
     
  20. afw2004

    afw2004 New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2006
    Messages:
    14
    opennetworks

    Что значит "прямой код"? Что значит "не прямой код"? (Не силен в терминологии)