собственно, как? если в CreateThread передается один параметр ( как передать функции два? или более? думал через структуру там может, но в коде это осуществить не удалось ( спасибо..
только через структуру а в CreateThread передавать указаткль на ее экземпляр. показывай код. или пиши конкретнее в чем собственно проблема
если выделять память под структуру, то все получается а если нужно запустить процедуру в потоке, которой нужно передать более одного параметра? Код (Text): Suks struct par1 dd ? par2 dd ? Suks ends .data s1 db "Hi", 0 s2 db "man!", 0 hMem dd 0 ThreadId dd 0 .code start: invoke VirtualAlloc, 0, sizeof Suks, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE mov hMem, eax assume eax : ptr Suks mov [eax].par1, offset s1 mov [eax].par2, offset s2 push hMem lea ecx, ThreadProc lea edx, offset ThreadId invoke CreateThread, 0, 0, ecx, hMem, 0, edx .while TRUE invoke Sleep, 3000 .endw invoke ExitProcess, 0 ThreadProc PROC shit:dword mov esi, shit assume esi: ptr Suks invoke MessageBox, 0, [esi].par1, [esi].par2, MB_OK ret ThreadProc endp end start так все робит, а вот как быть если функция Код (Text): ThreadProc PROC par1:dword, par2:dword invoke MessageBox, 0, par1, par2, MB_OK ret ThreadProc endp типа такого?...
зачем вообще именно так нужно делать? ThreadProc зарезервирована как колбэк функция с одним параметром, тобишь тут ты изменить ничего не сможешь Только 1й вариан подходит
если приспичило, делай переходник: Код (Text): Args struct var1 dd ? var2 dd ? Args ends ThreadProc proc lpParam mov eax,[lpParam] invoke YourThreadProc,[eax].Args.var1,[eax].Args.var2 ret ThreadProc endp YourThreadProc proc par1,par2 ret YourThreadProc endp