Вот код dll Код (Text): .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\macros\strings.mac PARAMETRI STRUCT _strt db 256 dup(?) _id dd 0 _end db ? PARAMETRI ENDS .code start proc scr:dword mov ecx,scr invoke MessageBox,0,addr (PARAMETRI ptr [ecx])._strt,addr (PARAMETRI ptr [ecx])._strt,0 ret start endp LibMain proc hInstDLL:DWORD,reason:DWORD,unused:DWORD local p:PARAMETRI cmp reason,1 jne l_exit invoke lstrcpy,addr p._strt,$CTA0("string") invoke CreateThread,0,0,offset start,addr p,0,0 invoke CloseHandle,eax invoke Sleep,1000 l_exit:ret LibMain Endp SysFile proc xor eax,eax ret SysFile endp End LibMain Процесс просто падает. От чего это может быть? Спасибо.
Это опять те же фокусы с последовательным исполнением Ты не возвращаешь 1 перед выходом и винда, походу, выгружает твою либу, а затем путается начать исполнять созданный поток(об этом говорит исключение по адресу хххх1000h). Странное поведение винды(если я в своих выводах не ошибаюсь). Поставь mov eax,1 перед ret и всё заработает.
asd, Благодарствую! А ещё после каждого CreateThread если Sleep не поставить в dll - либо не передадутся параметры, либо всё грохается.