Я могу заполнить список с именами процессов, для этого я использую структуру PROCESSENTRY32. Но когда я пытаюсь получить th32ParentProcessID из структуры PROCESSENTRY32, я получаю ошибку, eax равно -1.
Мои структуры:
PROCESSENTRY32 STRUC
dwSize DWORD ?
cntUsage DWORD ?
th32ProcessID DWORD ?
th32DefaultHeapID DWORD ?
th32ModuleID DWORD ?
cntThreads DWORD ?
th32ParentProcessID DWORD ?
pcPriClassBase DWORD ?
dwFlags DWORD ?
szExeFile dw MAX_PATH dup(?)
PROCESSENTRY32 ENDS
MODULEENTRY32 STRUCT
dwSize DWORD ?
th32ModuleID DWORD ?
th32ProcessID DWORD ?
GlblcntUsage DWORD ?
ProccntUsage DWORD ?
modBaseAddr DWORD ?
modBaseSize DWORD ?
hModule DWORD ?
szModule db MAX_MODULE_NAME32+1 dup(?)
szExePath db MAX_PATH dup(?)
MODULEENTRY32 ENDS
Моя функция:
;Modul begin
push PROCDATA.th32ProcessID
push TH32CS_SNAPMODULE
call CreateToolhelp32Snapshot@8
mov mhSnapshot, eax
;EAX = -1 Why?
mov MODULDATA.dwSize, sizeof MODULEENTRY32
push offset MODULDATA
push mhSnapshot
call Module32FirstW@8
;Module end
У меня правильные структуры?