· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› передача параметров в asm-dll

Посл.отвђт Сообщенiе


Дата: Сен 21, 2004 23:54:26

Написал простенькую ф-цию в dll на asm'e, пытаюсь вызвать её из VB, но выскакивает ошибка 49: "Плохое dll соглашение вызова". Все возможные причины такого просмотрел в msdn, вроде всё правильно, но увы... не работает. Со строками получается передача параметров в dll, c числами - dword - не получается. Вернее параметры в dll приходят, я их там вижу, вызываю диалог выбора цвета, он мне выдает decimal значение выбраного цвета и при возвращении из dll - ошибка.
Тут процедура:
ChooseColour proc hWin:DWORD, Flags:DWORD
    LOCAL hHandle		:DWORD
    LOCAL dwFlags		:DWORD
	
    m2m hHandle,hWin            
    m2m dwFlags,Flags
    invoke ColorDialog,hHandle,hInstance,dwFlags ;ф-ция из masm32lib
    ret
ChooseColour endp


А тут вызов её:
Declare Function ChooseColour Lib "BrowseDLG.dll" ( _
                                                    ByVal hwnd As Long, _
                                                    ByVal dwFlags As Long) As Long

ChooseColour ByVal Me.hwnd, ByVal 0


Кто знает vb подскажите, где тут могут быть грабли?


Дата: Сен 22, 2004 00:19:25

plz Приаттач DLL.


Дата: Сен 22, 2004 00:24:05

cresta
предохраняй регистры и все будет в порядке. Глянул на колор диалог - там edi корежится, вот VB и ругается праведно


Дата: Сен 22, 2004 00:30:43 · Поправил: PavPS

В msdn написаны основные регистры, которые должны быть сохранены.
ChooseColour PROC EXPORT
LOCAL hHandle:DWORD
LOCAL dwFlags:DWORD

PUSHA
MOV EAX,DWORD PTR [ESP+32+12+04+00]
MOV hHandle,EAX
MOV EAX,DWORD PTR [ESP+32+12+04+04]
MOV dwFlags,EAX

invoke ColorDialog,hHandle,hInstance,dwFlags ;ф-ция из masm32lib
POPA
ret 8
ChooseColour endp

masquer, опередил... :)


Дата: Сен 22, 2004 01:21:37

masquer,PavPS

Оцеловал бы, но не модно... (могут неправильно понять:))

Сделал ChooseColour proc uses edi esi hWin:DWORD, Flags:DWORD - работает :)

PavPS

не знаю нужно ли ещё, но на всякий случай приаттачил.


988415669__BrowseDLG.Asm


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074