Artifact ae72c8193c7063aca3b17502d7f1bfe78fb4c748:
- File
src/win32/tlhelp32.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /*************** 0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20 ********\.* 0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0060: 20 20 20 20 20 20 20 20 20 20 74 6c 68 65 6c 70 tlhelp 0070: 33 32 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 32.d 0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 *.* 00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 *.* 00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50 Windows AP 0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20 I header module 0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 *.* 0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 *.* 0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66 Translated f 0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77 rom MinGW Window 01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20 s headers 01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20 *.* 01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 *.* 0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c Pl 0220: 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c 69 63 aced into public 0230: 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 20 20 domain 0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a *. 0250: 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a \*************** 0260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0270: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0280: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0290: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 6d 6f 64 75 6c 65 ********/.module 02a0: 20 77 69 6e 33 32 2e 74 6c 68 65 6c 70 33 32 3b win32.tlhelp32; 02b0: 0a 0a 70 72 69 76 61 74 65 20 69 6d 70 6f 72 74 ..private import 02c0: 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0a 0a win32.windef;.. 02d0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 0a 09 48 enum : uint {..H 02e0: 46 33 32 5f 44 45 46 41 55 4c 54 20 3d 20 31 2c F32_DEFAULT = 1, 02f0: 0a 09 48 46 33 32 5f 53 48 41 52 45 44 0a 7d 0a ..HF32_SHARED.}. 0300: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 0a 09 .enum : uint {.. 0310: 4c 46 33 32 5f 46 49 58 45 44 20 20 20 20 3d 20 LF32_FIXED = 0320: 30 78 31 2c 0a 09 4c 46 33 32 5f 46 52 45 45 20 0x1,..LF32_FREE 0330: 20 20 20 20 3d 20 30 78 32 2c 0a 09 4c 46 33 32 = 0x2,..LF32 0340: 5f 4d 4f 56 45 41 42 4c 45 20 3d 20 30 78 34 0a _MOVEABLE = 0x4. 0350: 7d 0a 0a 63 6f 6e 73 74 20 4d 41 58 5f 4d 4f 44 }..const MAX_MOD 0360: 55 4c 45 5f 4e 41 4d 45 33 32 20 3d 20 32 35 35 ULE_NAME32 = 255 0370: 3b 0a 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b ;..enum : uint { 0380: 0a 09 54 48 33 32 43 53 5f 53 4e 41 50 48 45 41 ..TH32CS_SNAPHEA 0390: 50 4c 49 53 54 20 3d 20 30 78 31 2c 0a 09 54 48 PLIST = 0x1,..TH 03a0: 33 32 43 53 5f 53 4e 41 50 50 52 4f 43 45 53 53 32CS_SNAPPROCESS 03b0: 20 20 3d 20 30 78 32 2c 0a 09 54 48 33 32 43 53 = 0x2,..TH32CS 03c0: 5f 53 4e 41 50 54 48 52 45 41 44 20 20 20 3d 20 _SNAPTHREAD = 03d0: 30 78 34 2c 0a 09 54 48 33 32 43 53 5f 53 4e 41 0x4,..TH32CS_SNA 03e0: 50 4d 4f 44 55 4c 45 20 20 20 3d 20 30 78 38 2c PMODULE = 0x8, 03f0: 0a 09 54 48 33 32 43 53 5f 53 4e 41 50 41 4c 4c ..TH32CS_SNAPALL 0400: 20 20 20 20 20 20 3d 20 28 54 48 33 32 43 53 5f = (TH32CS_ 0410: 53 4e 41 50 48 45 41 50 4c 49 53 54 7c 54 48 33 SNAPHEAPLIST|TH3 0420: 32 43 53 5f 53 4e 41 50 50 52 4f 43 45 53 53 7c 2CS_SNAPPROCESS| 0430: 54 48 33 32 43 53 5f 53 4e 41 50 54 48 52 45 41 TH32CS_SNAPTHREA 0440: 44 7c 54 48 33 32 43 53 5f 53 4e 41 50 4d 4f 44 D|TH32CS_SNAPMOD 0450: 55 4c 45 29 2c 0a 09 54 48 33 32 43 53 5f 49 4e ULE),..TH32CS_IN 0460: 48 45 52 49 54 20 20 20 20 20 20 3d 20 30 78 38 HERIT = 0x8 0470: 30 30 30 30 30 30 30 0a 7d 0a 0a 73 74 72 75 63 0000000.}..struc 0480: 74 20 48 45 41 50 4c 49 53 54 33 32 20 7b 0a 09 t HEAPLIST32 {.. 0490: 53 49 5a 45 5f 54 20 64 77 53 69 7a 65 3b 0a 09 SIZE_T dwSize;.. 04a0: 44 57 4f 52 44 20 74 68 33 32 50 72 6f 63 65 73 DWORD th32Proces 04b0: 73 49 44 3b 0a 09 55 4c 4f 4e 47 5f 50 54 52 20 sID;..ULONG_PTR 04c0: 74 68 33 32 48 65 61 70 49 44 3b 0a 09 44 57 4f th32HeapID;..DWO 04d0: 52 44 20 64 77 46 6c 61 67 73 3b 0a 7d 20 0a 61 RD dwFlags;.} .a 04e0: 6c 69 61 73 20 48 45 41 50 4c 49 53 54 33 32 2a lias HEAPLIST32* 04f0: 20 50 48 45 41 50 4c 49 53 54 33 32 3b 0a 61 6c PHEAPLIST32;.al 0500: 69 61 73 20 48 45 41 50 4c 49 53 54 33 32 2a 20 ias HEAPLIST32* 0510: 4c 50 48 45 41 50 4c 49 53 54 33 32 3b 0a 0a 73 LPHEAPLIST32;..s 0520: 74 72 75 63 74 20 48 45 41 50 45 4e 54 52 59 33 truct HEAPENTRY3 0530: 32 20 7b 0a 09 53 49 5a 45 5f 54 20 64 77 53 69 2 {..SIZE_T dwSi 0540: 7a 65 3b 0a 09 48 41 4e 44 4c 45 20 68 48 61 6e ze;..HANDLE hHan 0550: 64 6c 65 3b 0a 09 55 4c 4f 4e 47 5f 50 54 52 20 dle;..ULONG_PTR 0560: 64 77 41 64 64 72 65 73 73 3b 0a 09 53 49 5a 45 dwAddress;..SIZE 0570: 5f 54 20 64 77 42 6c 6f 63 6b 53 69 7a 65 3b 0a _T dwBlockSize;. 0580: 09 44 57 4f 52 44 20 64 77 46 6c 61 67 73 3b 0a .DWORD dwFlags;. 0590: 09 44 57 4f 52 44 20 64 77 4c 6f 63 6b 43 6f 75 .DWORD dwLockCou 05a0: 6e 74 3b 0a 09 44 57 4f 52 44 20 64 77 52 65 73 nt;..DWORD dwRes 05b0: 76 64 3b 0a 09 44 57 4f 52 44 20 74 68 33 32 50 vd;..DWORD th32P 05c0: 72 6f 63 65 73 73 49 44 3b 0a 09 55 4c 4f 4e 47 rocessID;..ULONG 05d0: 5f 50 54 52 20 74 68 33 32 48 65 61 70 49 44 3b _PTR th32HeapID; 05e0: 0a 7d 0a 61 6c 69 61 73 20 48 45 41 50 45 4e 54 .}.alias HEAPENT 05f0: 52 59 33 32 2a 20 50 48 45 41 50 45 4e 54 52 59 RY32* PHEAPENTRY 0600: 33 32 3b 0a 61 6c 69 61 73 20 48 45 41 50 45 4e 32;.alias HEAPEN 0610: 54 52 59 33 32 2a 20 4c 50 48 45 41 50 45 4e 54 TRY32* LPHEAPENT 0620: 52 59 33 32 3b 0a 0a 73 74 72 75 63 74 20 50 52 RY32;..struct PR 0630: 4f 43 45 53 53 45 4e 54 52 59 33 32 57 20 7b 0a OCESSENTRY32W {. 0640: 09 44 57 4f 52 44 20 64 77 53 69 7a 65 3b 0a 09 .DWORD dwSize;.. 0650: 44 57 4f 52 44 20 63 6e 74 55 73 61 67 65 3b 0a DWORD cntUsage;. 0660: 09 44 57 4f 52 44 20 74 68 33 32 50 72 6f 63 65 .DWORD th32Proce 0670: 73 73 49 44 3b 0a 09 55 4c 4f 4e 47 5f 50 54 52 ssID;..ULONG_PTR 0680: 20 74 68 33 32 44 65 66 61 75 6c 74 48 65 61 70 th32DefaultHeap 0690: 49 44 3b 0a 09 44 57 4f 52 44 20 74 68 33 32 4d ID;..DWORD th32M 06a0: 6f 64 75 6c 65 49 44 3b 0a 09 44 57 4f 52 44 20 oduleID;..DWORD 06b0: 63 6e 74 54 68 72 65 61 64 73 3b 0a 09 44 57 4f cntThreads;..DWO 06c0: 52 44 20 74 68 33 32 50 61 72 65 6e 74 50 72 6f RD th32ParentPro 06d0: 63 65 73 73 49 44 3b 0a 09 4c 4f 4e 47 20 70 63 cessID;..LONG pc 06e0: 50 72 69 43 6c 61 73 73 42 61 73 65 3b 0a 09 44 PriClassBase;..D 06f0: 57 4f 52 44 20 64 77 46 6c 61 67 73 3b 0a 09 57 WORD dwFlags;..W 0700: 43 48 41 52 5b 4d 41 58 5f 50 41 54 48 5d 20 73 CHAR[MAX_PATH] s 0710: 7a 45 78 65 46 69 6c 65 3b 0a 7d 0a 61 6c 69 61 zExeFile;.}.alia 0720: 73 20 50 52 4f 43 45 53 53 45 4e 54 52 59 33 32 s PROCESSENTRY32 0730: 57 2a 20 50 50 52 4f 43 45 53 53 45 4e 54 52 59 W* PPROCESSENTRY 0740: 33 32 57 3b 0a 61 6c 69 61 73 20 50 52 4f 43 45 32W;.alias PROCE 0750: 53 53 45 4e 54 52 59 33 32 57 2a 20 4c 50 50 52 SSENTRY32W* LPPR 0760: 4f 43 45 53 53 45 4e 54 52 59 33 32 57 3b 0a 0a OCESSENTRY32W;.. 0770: 73 74 72 75 63 74 20 54 48 52 45 41 44 45 4e 54 struct THREADENT 0780: 52 59 33 32 20 7b 0a 09 44 57 4f 52 44 20 64 77 RY32 {..DWORD dw 0790: 53 69 7a 65 3b 0a 09 44 57 4f 52 44 20 63 6e 74 Size;..DWORD cnt 07a0: 55 73 61 67 65 3b 0a 09 44 57 4f 52 44 20 74 68 Usage;..DWORD th 07b0: 33 32 54 68 72 65 61 64 49 44 3b 0a 09 44 57 4f 32ThreadID;..DWO 07c0: 52 44 20 74 68 33 32 4f 77 6e 65 72 50 72 6f 63 RD th32OwnerProc 07d0: 65 73 73 49 44 3b 0a 09 4c 4f 4e 47 20 74 70 42 essID;..LONG tpB 07e0: 61 73 65 50 72 69 3b 0a 09 4c 4f 4e 47 20 74 70 asePri;..LONG tp 07f0: 44 65 6c 74 61 50 72 69 3b 0a 09 44 57 4f 52 44 DeltaPri;..DWORD 0800: 20 64 77 46 6c 61 67 73 3b 0a 7d 0a 61 6c 69 61 dwFlags;.}.alia 0810: 73 20 54 48 52 45 41 44 45 4e 54 52 59 33 32 2a s THREADENTRY32* 0820: 20 50 54 48 52 45 41 44 45 4e 54 52 59 33 32 3b PTHREADENTRY32; 0830: 0a 61 6c 69 61 73 20 54 48 52 45 41 44 45 4e 54 .alias THREADENT 0840: 52 59 33 32 2a 20 4c 50 54 48 52 45 41 44 45 4e RY32* LPTHREADEN 0850: 54 52 59 33 32 3b 0a 0a 73 74 72 75 63 74 20 4d TRY32;..struct M 0860: 4f 44 55 4c 45 45 4e 54 52 59 33 32 57 20 7b 0a ODULEENTRY32W {. 0870: 09 44 57 4f 52 44 20 64 77 53 69 7a 65 3b 0a 09 .DWORD dwSize;.. 0880: 44 57 4f 52 44 20 74 68 33 32 4d 6f 64 75 6c 65 DWORD th32Module 0890: 49 44 3b 0a 09 44 57 4f 52 44 20 74 68 33 32 50 ID;..DWORD th32P 08a0: 72 6f 63 65 73 73 49 44 3b 0a 09 44 57 4f 52 44 rocessID;..DWORD 08b0: 20 47 6c 62 6c 63 6e 74 55 73 61 67 65 3b 0a 09 GlblcntUsage;.. 08c0: 44 57 4f 52 44 20 50 72 6f 63 63 6e 74 55 73 61 DWORD ProccntUsa 08d0: 67 65 3b 0a 09 42 59 54 45 20 2a 6d 6f 64 42 61 ge;..BYTE *modBa 08e0: 73 65 41 64 64 72 3b 0a 09 44 57 4f 52 44 20 6d seAddr;..DWORD m 08f0: 6f 64 42 61 73 65 53 69 7a 65 3b 0a 09 48 4d 4f odBaseSize;..HMO 0900: 44 55 4c 45 20 68 4d 6f 64 75 6c 65 3b 20 0a 09 DULE hModule; .. 0910: 57 43 48 41 52 5b 4d 41 58 5f 4d 4f 44 55 4c 45 WCHAR[MAX_MODULE 0920: 5f 4e 41 4d 45 33 32 20 2b 20 31 5d 20 73 7a 4d _NAME32 + 1] szM 0930: 6f 64 75 6c 65 3b 0a 09 57 43 48 41 52 5b 4d 41 odule;..WCHAR[MA 0940: 58 5f 50 41 54 48 5d 20 73 7a 45 78 65 50 61 74 X_PATH] szExePat 0950: 68 3b 0a 7d 0a 61 6c 69 61 73 20 4d 4f 44 55 4c h;.}.alias MODUL 0960: 45 45 4e 54 52 59 33 32 57 2a 20 50 4d 4f 44 55 EENTRY32W* PMODU 0970: 4c 45 45 4e 54 52 59 33 32 57 3b 0a 61 6c 69 61 LEENTRY32W;.alia 0980: 73 20 4d 4f 44 55 4c 45 45 4e 54 52 59 33 32 57 s MODULEENTRY32W 0990: 2a 20 4c 50 4d 4f 44 55 4c 45 45 4e 54 52 59 33 * LPMODULEENTRY3 09a0: 32 57 3b 0a 0a 76 65 72 73 69 6f 6e 28 55 6e 69 2W;..version(Uni 09b0: 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73 20 50 code) {..alias P 09c0: 52 4f 43 45 53 53 45 4e 54 52 59 33 32 57 20 50 ROCESSENTRY32W P 09d0: 52 4f 43 45 53 53 45 4e 54 52 59 33 32 3b 0a 09 ROCESSENTRY32;.. 09e0: 61 6c 69 61 73 20 50 50 52 4f 43 45 53 53 45 4e alias PPROCESSEN 09f0: 54 52 59 33 32 57 20 50 50 52 4f 43 45 53 53 45 TRY32W PPROCESSE 0a00: 4e 54 52 59 33 32 3b 0a 09 61 6c 69 61 73 20 4c NTRY32;..alias L 0a10: 50 50 52 4f 43 45 53 53 45 4e 54 52 59 33 32 57 PPROCESSENTRY32W 0a20: 20 4c 50 50 52 4f 43 45 53 53 45 4e 54 52 59 33 LPPROCESSENTRY3 0a30: 32 3b 0a 0a 09 61 6c 69 61 73 20 4d 4f 44 55 4c 2;...alias MODUL 0a40: 45 45 4e 54 52 59 33 32 57 20 4d 4f 44 55 4c 45 EENTRY32W MODULE 0a50: 45 4e 54 52 59 33 32 3b 0a 09 61 6c 69 61 73 20 ENTRY32;..alias 0a60: 50 4d 4f 44 55 4c 45 45 4e 54 52 59 33 32 57 20 PMODULEENTRY32W 0a70: 50 4d 4f 44 55 4c 45 45 4e 54 52 59 33 32 3b 0a PMODULEENTRY32;. 0a80: 09 61 6c 69 61 73 20 4c 50 4d 4f 44 55 4c 45 45 .alias LPMODULEE 0a90: 4e 54 52 59 33 32 57 20 4c 50 4d 4f 44 55 4c 45 NTRY32W LPMODULE 0aa0: 45 4e 54 52 59 33 32 3b 0a 7d 20 65 6c 73 65 20 ENTRY32;.} else 0ab0: 7b 0a 09 73 74 72 75 63 74 20 50 52 4f 43 45 53 {..struct PROCES 0ac0: 53 45 4e 54 52 59 33 32 20 7b 0a 09 09 44 57 4f SENTRY32 {...DWO 0ad0: 52 44 20 64 77 53 69 7a 65 3b 0a 09 09 44 57 4f RD dwSize;...DWO 0ae0: 52 44 20 63 6e 74 55 73 61 67 65 3b 0a 09 09 44 RD cntUsage;...D 0af0: 57 4f 52 44 20 74 68 33 32 50 72 6f 63 65 73 73 WORD th32Process 0b00: 49 44 3b 0a 09 09 55 4c 4f 4e 47 5f 50 54 52 20 ID;...ULONG_PTR 0b10: 74 68 33 32 44 65 66 61 75 6c 74 48 65 61 70 49 th32DefaultHeapI 0b20: 44 3b 0a 09 09 44 57 4f 52 44 20 74 68 33 32 4d D;...DWORD th32M 0b30: 6f 64 75 6c 65 49 44 3b 0a 09 09 44 57 4f 52 44 oduleID;...DWORD 0b40: 20 63 6e 74 54 68 72 65 61 64 73 3b 0a 09 09 44 cntThreads;...D 0b50: 57 4f 52 44 20 74 68 33 32 50 61 72 65 6e 74 50 WORD th32ParentP 0b60: 72 6f 63 65 73 73 49 44 3b 0a 09 09 4c 4f 4e 47 rocessID;...LONG 0b70: 20 70 63 50 72 69 43 6c 61 73 73 42 61 73 65 3b pcPriClassBase; 0b80: 0a 09 09 44 57 4f 52 44 20 64 77 46 6c 61 67 73 ...DWORD dwFlags 0b90: 3b 0a 09 09 43 48 41 52 5b 4d 41 58 5f 50 41 54 ;...CHAR[MAX_PAT 0ba0: 48 5d 20 73 7a 45 78 65 46 69 6c 65 3b 0a 09 7d H] szExeFile;..} 0bb0: 0a 09 61 6c 69 61 73 20 50 52 4f 43 45 53 53 45 ..alias PROCESSE 0bc0: 4e 54 52 59 33 32 2a 20 50 50 52 4f 43 45 53 53 NTRY32* PPROCESS 0bd0: 45 4e 54 52 59 33 32 3b 0a 09 61 6c 69 61 73 20 ENTRY32;..alias 0be0: 50 52 4f 43 45 53 53 45 4e 54 52 59 33 32 2a 20 PROCESSENTRY32* 0bf0: 4c 50 50 52 4f 43 45 53 53 45 4e 54 52 59 33 32 LPPROCESSENTRY32 0c00: 3b 0a 0a 09 73 74 72 75 63 74 20 4d 4f 44 55 4c ;...struct MODUL 0c10: 45 45 4e 54 52 59 33 32 20 7b 0a 09 09 44 57 4f EENTRY32 {...DWO 0c20: 52 44 20 64 77 53 69 7a 65 3b 0a 09 09 44 57 4f RD dwSize;...DWO 0c30: 52 44 20 74 68 33 32 4d 6f 64 75 6c 65 49 44 3b RD th32ModuleID; 0c40: 0a 09 09 44 57 4f 52 44 20 74 68 33 32 50 72 6f ...DWORD th32Pro 0c50: 63 65 73 73 49 44 3b 0a 09 09 44 57 4f 52 44 20 cessID;...DWORD 0c60: 47 6c 62 6c 63 6e 74 55 73 61 67 65 3b 0a 09 09 GlblcntUsage;... 0c70: 44 57 4f 52 44 20 50 72 6f 63 63 6e 74 55 73 61 DWORD ProccntUsa 0c80: 67 65 3b 0a 09 09 42 59 54 45 20 2a 6d 6f 64 42 ge;...BYTE *modB 0c90: 61 73 65 41 64 64 72 3b 0a 09 09 44 57 4f 52 44 aseAddr;...DWORD 0ca0: 20 6d 6f 64 42 61 73 65 53 69 7a 65 3b 0a 09 09 modBaseSize;... 0cb0: 48 4d 4f 44 55 4c 45 20 68 4d 6f 64 75 6c 65 3b HMODULE hModule; 0cc0: 0a 09 09 63 68 61 72 5b 4d 41 58 5f 4d 4f 44 55 ...char[MAX_MODU 0cd0: 4c 45 5f 4e 41 4d 45 33 32 20 2b 20 31 5d 20 73 LE_NAME32 + 1] s 0ce0: 7a 4d 6f 64 75 6c 65 3b 0a 09 09 63 68 61 72 5b zModule;...char[ 0cf0: 4d 41 58 5f 50 41 54 48 5d 20 73 7a 45 78 65 50 MAX_PATH] szExeP 0d00: 61 74 68 3b 0a 09 7d 0a 09 61 6c 69 61 73 20 4d ath;..}..alias M 0d10: 4f 44 55 4c 45 45 4e 54 52 59 33 32 2a 20 50 4d ODULEENTRY32* PM 0d20: 4f 44 55 4c 45 45 4e 54 52 59 33 32 3b 0a 09 61 ODULEENTRY32;..a 0d30: 6c 69 61 73 20 4d 4f 44 55 4c 45 45 4e 54 52 59 lias MODULEENTRY 0d40: 33 32 2a 20 4c 50 4d 4f 44 55 4c 45 45 4e 54 52 32* LPMODULEENTR 0d50: 59 33 32 3b 0a 7d 0a 0a 0a 65 78 74 65 72 6e 28 Y32;.}...extern( 0d60: 57 69 6e 64 6f 77 73 29 20 7b 0a 09 42 4f 4f 4c Windows) {..BOOL 0d70: 20 48 65 61 70 33 32 46 69 72 73 74 28 4c 50 48 Heap32First(LPH 0d80: 45 41 50 45 4e 54 52 59 33 32 2c 44 57 4f 52 44 EAPENTRY32,DWORD 0d90: 2c 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 48 ,DWORD);..BOOL H 0da0: 65 61 70 33 32 4c 69 73 74 46 69 72 73 74 28 48 eap32ListFirst(H 0db0: 41 4e 44 4c 45 2c 4c 50 48 45 41 50 4c 49 53 54 ANDLE,LPHEAPLIST 0dc0: 33 32 29 3b 0a 09 42 4f 4f 4c 20 48 65 61 70 33 32);..BOOL Heap3 0dd0: 32 4c 69 73 74 4e 65 78 74 28 48 41 4e 44 4c 45 2ListNext(HANDLE 0de0: 2c 4c 50 48 45 41 50 4c 49 53 54 33 32 29 3b 0a ,LPHEAPLIST32);. 0df0: 09 42 4f 4f 4c 20 48 65 61 70 33 32 4e 65 78 74 .BOOL Heap32Next 0e00: 28 4c 50 48 45 41 50 45 4e 54 52 59 33 32 29 3b (LPHEAPENTRY32); 0e10: 0a 09 42 4f 4f 4c 20 54 68 72 65 61 64 33 32 46 ..BOOL Thread32F 0e20: 69 72 73 74 28 48 41 4e 44 4c 45 2c 4c 50 54 48 irst(HANDLE,LPTH 0e30: 52 45 41 44 45 4e 54 52 59 33 32 29 3b 0a 09 42 READENTRY32);..B 0e40: 4f 4f 4c 20 54 68 72 65 61 64 33 32 4e 65 78 74 OOL Thread32Next 0e50: 28 48 41 4e 44 4c 45 2c 4c 50 54 48 52 45 41 44 (HANDLE,LPTHREAD 0e60: 45 4e 54 52 59 33 32 29 3b 0a 09 42 4f 4f 4c 20 ENTRY32);..BOOL 0e70: 54 6f 6f 6c 68 65 6c 70 33 32 52 65 61 64 50 72 Toolhelp32ReadPr 0e80: 6f 63 65 73 73 4d 65 6d 6f 72 79 28 44 57 4f 52 ocessMemory(DWOR 0e90: 44 2c 4c 50 43 56 4f 49 44 2c 4c 50 56 4f 49 44 D,LPCVOID,LPVOID 0ea0: 2c 44 57 4f 52 44 2c 4c 50 44 57 4f 52 44 29 3b ,DWORD,LPDWORD); 0eb0: 0a 09 48 41 4e 44 4c 45 20 43 72 65 61 74 65 54 ..HANDLE CreateT 0ec0: 6f 6f 6c 68 65 6c 70 33 32 53 6e 61 70 73 68 6f oolhelp32Snapsho 0ed0: 74 28 44 57 4f 52 44 2c 44 57 4f 52 44 29 3b 0a t(DWORD,DWORD);. 0ee0: 09 42 4f 4f 4c 20 4d 6f 64 75 6c 65 33 32 46 69 .BOOL Module32Fi 0ef0: 72 73 74 57 28 48 41 4e 44 4c 45 2c 4c 50 4d 4f rstW(HANDLE,LPMO 0f00: 44 55 4c 45 45 4e 54 52 59 33 32 57 29 3b 0a 09 DULEENTRY32W);.. 0f10: 42 4f 4f 4c 20 4d 6f 64 75 6c 65 33 32 4e 65 78 BOOL Module32Nex 0f20: 74 57 28 48 41 4e 44 4c 45 2c 4c 50 4d 4f 44 55 tW(HANDLE,LPMODU 0f30: 4c 45 45 4e 54 52 59 33 32 57 29 3b 0a 09 42 4f LEENTRY32W);..BO 0f40: 4f 4c 20 50 72 6f 63 65 73 73 33 32 46 69 72 73 OL Process32Firs 0f50: 74 57 28 48 41 4e 44 4c 45 2c 4c 50 50 52 4f 43 tW(HANDLE,LPPROC 0f60: 45 53 53 45 4e 54 52 59 33 32 57 29 3b 0a 09 42 ESSENTRY32W);..B 0f70: 4f 4f 4c 20 50 72 6f 63 65 73 73 33 32 4e 65 78 OOL Process32Nex 0f80: 74 57 28 48 41 4e 44 4c 45 2c 4c 50 50 52 4f 43 tW(HANDLE,LPPROC 0f90: 45 53 53 45 4e 54 52 59 33 32 57 29 3b 0a 7d 0a ESSENTRY32W);.}. 0fa0: 0a 76 65 72 73 69 6f 6e 28 55 6e 69 63 6f 64 65 .version(Unicode 0fb0: 29 20 7b 0a 09 61 6c 69 61 73 20 4d 6f 64 75 6c ) {..alias Modul 0fc0: 65 33 32 46 69 72 73 74 57 20 4d 6f 64 75 6c 65 e32FirstW Module 0fd0: 33 32 46 69 72 73 74 3b 0a 09 61 6c 69 61 73 20 32First;..alias 0fe0: 4d 6f 64 75 6c 65 33 32 4e 65 78 74 57 20 4d 6f Module32NextW Mo 0ff0: 64 75 6c 65 33 32 4e 65 78 74 3b 0a 09 61 6c 69 dule32Next;..ali 1000: 61 73 20 50 72 6f 63 65 73 73 33 32 46 69 72 73 as Process32Firs 1010: 74 57 20 50 72 6f 63 65 73 73 33 32 46 69 72 73 tW Process32Firs 1020: 74 3b 0a 09 61 6c 69 61 73 20 50 72 6f 63 65 73 t;..alias Proces 1030: 73 33 32 4e 65 78 74 57 20 50 72 6f 63 65 73 73 s32NextW Process 1040: 33 32 4e 65 78 74 3b 0a 7d 20 65 6c 73 65 20 7b 32Next;.} else { 1050: 0a 09 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows 1060: 29 20 7b 0a 09 09 42 4f 4f 4c 20 4d 6f 64 75 6c ) {...BOOL Modul 1070: 65 33 32 46 69 72 73 74 28 48 41 4e 44 4c 45 2c e32First(HANDLE, 1080: 4c 50 4d 4f 44 55 4c 45 45 4e 54 52 59 33 32 29 LPMODULEENTRY32) 1090: 3b 0a 09 09 42 4f 4f 4c 20 4d 6f 64 75 6c 65 33 ;...BOOL Module3 10a0: 32 4e 65 78 74 28 48 41 4e 44 4c 45 2c 4c 50 4d 2Next(HANDLE,LPM 10b0: 4f 44 55 4c 45 45 4e 54 52 59 33 32 29 3b 0a 09 ODULEENTRY32);.. 10c0: 09 42 4f 4f 4c 20 50 72 6f 63 65 73 73 33 32 46 .BOOL Process32F 10d0: 69 72 73 74 28 48 41 4e 44 4c 45 2c 4c 50 50 52 irst(HANDLE,LPPR 10e0: 4f 43 45 53 53 45 4e 54 52 59 33 32 29 3b 0a 09 OCESSENTRY32);.. 10f0: 09 42 4f 4f 4c 20 50 72 6f 63 65 73 73 33 32 4e .BOOL Process32N 1100: 65 78 74 28 48 41 4e 44 4c 45 2c 4c 50 50 52 4f ext(HANDLE,LPPRO 1110: 43 45 53 53 45 4e 54 52 59 33 32 29 3b 0a 09 7d CESSENTRY32);..} 1120: 0a 7d 0a .}.