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 .}.