Опытный
 
Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005
Репутация: нет Всего: 62
|
Типа такого имеешь в виду? | Код | ;goto make
.386 .model flat,stdcall option casemap:none
include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib
.data
msg_cap1 db "Before starting two new threads...",0 msg_cap2 db "With two new threads...",0 msg_cap3 db "After terminating two threads...",0 buff db 800h dup(0) dwCurProc dd 0 hThread1 dd 0 hThread2 dd 0 dwAbort dd 0 .code
EnumThreads proc dwProcessId :DWORD
LOCAL te32 :THREADENTRY32 LOCAL hSnapshot :DWORD LOCAL nThreads :DWORD LOCAL info[50] :BYTE jmp @F fmt_str db "thread %d, ID = 0x%.8X",0Dh,0 @@:
; ------------------------------------------------------------------ mov nThreads,0 mov te32.dwSize,SIZEOF THREADENTRY32
invoke CreateToolhelp32Snapshot, TH32CS_SNAPTHREAD, dwProcessId test eax,eax js _leave
mov hSnapshot,eax
invoke Thread32First, hSnapshot, ADDR te32 or eax,eax jz _closesnap
_nextthread: mov eax,dwProcessId cmp eax,te32.th32OwnerProcessID jne _notour
inc nThreads invoke wsprintf, ADDR info, ADDR fmt_str, nThreads, te32.th32ThreadID invoke lstrcat, ADDR buff, ADDR info
_notour:
invoke Thread32Next, hSnapshot, ADDR te32 or eax,eax jnz _nextthread
_closesnap: invoke CloseHandle, hSnapshot _leave: ret
EnumThreads endp
; ----------------------------------------------------------------------
ThreadProc1 proc lpParam :DWORD
cmp dwAbort,1 je @F invoke Sleep, 10 @@: ret
ThreadProc1 endp
; ----------------------------------------------------------------------
ThreadProc2 proc lpParam :DWORD
cmp dwAbort,1 je @F invoke Sleep, 10 @@: ret
ThreadProc2 endp
; ----------------------------------------------------------------------
start:
invoke GetCurrentProcessId mov dwCurProc,eax invoke EnumThreads, eax
invoke MessageBox, 0, ADDR buff, ADDR msg_cap1, MB_ICONINFORMATION invoke CreateThread, 0, 0, OFFSET ThreadProc1, 0, 0, 0 mov hThread1,eax invoke CreateThread, 0, 0, OFFSET ThreadProc2, 0, 0, 0 mov hThread2,eax invoke RtlZeroMemory, ADDR buff, SIZEOF buff
invoke EnumThreads, dwCurProc
invoke MessageBox, 0, ADDR buff, ADDR msg_cap2, MB_ICONINFORMATION
inc dwAbort invoke CloseHandle, hThread2 invoke CloseHandle, hThread1 invoke RtlZeroMemory, ADDR buff, SIZEOF buff invoke EnumThreads, dwCurProc invoke MessageBox, 0, ADDR buff, ADDR msg_cap3, MB_ICONINFORMATION
invoke ExitProcess, 0 end start
;:make ;\masm32\bin\ml.exe /c /coff threads.cmd ;\masm32\bin\link.exe /SUBSYSTEM:WINDOWS threads.obj ;pause
|
Присоединённый файл ( Кол-во скачиваний: 6 )
threads.zip 1,90 Kb
|