D
Size: a a a
A
RS
struct PROCESSENTRY32программа x64, по этому из мсдн th32DefaultHeapID должен быть dq
dwSize dd ?
cntUsage dd ?
th32ProcessID dd ?
th32DefaultHeapID dq ?
th32ModuleID dd ?
cntThreads dd ?
th32ParentProcessID dd ?
pcPriClassBase dd ?
dwFlags dd ?
szExeFile rb 260
ends
typedef struct tagPROCESSENTRY32 {первый вариант не работает, вот рабочий вариант:
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
CHAR szExeFile[MAX_PATH];
} PROCESSENTRY32;
struct PROCESSENTRY32Для меня непонятно, почему нужно резервировать еще 4 байта, ведь адрес th32DefaultHeapID и так будет кратен 8, допустим структура расположена по адресу 402000, первые 3 dd поля будут +12байт = 402012, тоесть dq поле будет по адресу 402012
dwSize dd ?
cntUsage dd ?
th32ProcessID dd ?
rd 1
th32DefaultHeapID dq ?
th32ModuleID dd ?
cntThreads dd ?
th32ParentProcessID dd ?
pcPriClassBase dd ?
dwFlags dd ?
szExeFile rb 260
ends
RS
A
A
RS
RS
A
A
RS
A
RS
RS
RS
RS
RS