FASM cominvk

Тема в разделе "WASM.BEGINNERS", создана пользователем Maggot, 31 июл 2005.

  1. Maggot

    Maggot New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2005
    Сообщения:
    17
    Когда я вызываю процедуру COM объекта, который является переменной структуры, происходит ошибкаю.


    Код (Text):
    1.  
    2. struct DDRAWVARS
    3.   DDraw          DirectDraw
    4.   DDSPrimary     DirectDrawSurface
    5.   DDSBack        DirectDrawSurface
    6.   DDClipper      DirectDrawClipper
    7.   ddsd           DDSURFACEDESC
    8.   ddscaps        DDSCAPS
    9. ends
    10. .............
    11. .............
    12. .............
    13. DDr  DDRAWVARS
    14. .............
    15. .............
    16. .............
    17. invoke  DirectDrawCreate,NULL,DDr.DDraw,NULL
    18. cominvk  DDr.DDraw,SetCooperativeLevel,[Hwnd],DDSCL_NORMAL
    19.  


    Это моя ошибка или ошибка компилятора, то есть макрос не правильно составлен?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Какая ошибка?
     
  3. Maggot

    Maggot New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2005
    Сообщения:
    17


    Программа не правильно компилируется, ну и соответственно не правильно работает.

    Вот дизасм:
    Код (Text):
    1.  
    2. Так компилируется:
    3.                 push    0       ; pUnkOuter
    4.         push    offset lpDD ; lplpDD
    5.         push    0       ; lpGUID
    6.         call    ds:DirectDrawCreate
    7.         push    8
    8.         push    ds:hWnd
    9.         mov eax, ds:lpDD
    10.         push    eax
    11.         mov eax, [eax]
    12.         call    ds:dword_402054[eax]
    13.  
    14.  
    15. А так должно компилироваться:
    16.                 push    0       ; pUnkOuter
    17.         push    offset lpDD ; lplpDD
    18.         push    0       ; lpGUID
    19.         call    ds:DirectDrawCreate
    20.         push    8
    21.         push    ds:hWnd
    22.         mov eax, ds:lpDD
    23.         push    eax
    24.         mov eax, [eax]
    25.         call    dword ptr [eax+50h]
    26.  
     
  4. Privalov

    Privalov New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2004
    Сообщения:
    16
    У вас есть старая версия макросов, скачайте новый пакет из http://flatassembler.net/