tlhelp.odin 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //+build windows
  2. package sys_windows
  3. foreign import kernel32 "system:Kernel32.lib"
  4. @(default_calling_convention="system")
  5. foreign kernel32 {
  6. CreateToolhelp32Snapshot :: proc (dwFlags: DWORD, th32ProcessID: DWORD) -> HANDLE ---
  7. Process32FirstW :: proc (hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W) -> BOOL ---
  8. Process32NextW :: proc (hSnapshot: HANDLE, lppe: LPPROCESSENTRY32W) -> BOOL ---
  9. Thread32First :: proc (hSnapshot: HANDLE, lpte: LPTHREADENTRY32) -> BOOL ---
  10. Thread32Next :: proc (hSnapshot: HANDLE, lpte: LPTHREADENTRY32) -> BOOL ---
  11. Module32FirstW :: proc (hSnapshot: HANDLE, lpme: LPMODULEENTRY32W) -> BOOL ---
  12. Module32NextW :: proc (hSnapshot: HANDLE, lpme: LPMODULEENTRY32W) -> BOOL ---
  13. Heap32ListFirst :: proc (hSnapshot: HANDLE, lphl: LPHEAPLIST32) -> BOOL ---
  14. Heap32ListNext :: proc (hSnapshot: HANDLE, lphl: LPHEAPLIST32) -> BOOL ---
  15. Heap32First :: proc (lphe: LPHEAPENTRY32, th32ProcessID: DWORD, th32HeapID: ULONG_PTR) -> BOOL ---
  16. Heap32Next :: proc (lphe: LPHEAPENTRY32) -> BOOL ---
  17. Toolhelp32ReadProcessMemory :: proc (
  18. th32ProcessID: DWORD,
  19. lpBaseAddress: LPCVOID,
  20. lpBuffer: LPVOID,
  21. cbRead: SIZE_T,
  22. lpNumberOfBytesRead: ^SIZE_T,
  23. ) -> BOOL ---
  24. }
  25. MAX_MODULE_NAME32 :: 255
  26. TH32CS_INHERIT :: 0x80000000
  27. TH32CS_SNAPHEAPLIST :: 0x00000001
  28. TH32CS_SNAPPROCESS :: 0x00000002
  29. TH32CS_SNAPTHREAD :: 0x00000004
  30. TH32CS_SNAPMODULE :: 0x00000008
  31. TH32CS_SNAPMODULE32 :: 0x00000010
  32. TH32CS_SNAPALL :: TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE
  33. PROCESSENTRY32W :: struct {
  34. dwSize: DWORD,
  35. cntUsage: DWORD,
  36. th32ProcessID: DWORD,
  37. th32DefaultHeapID: ULONG_PTR,
  38. th32ModuleID: DWORD,
  39. cntThreads: DWORD,
  40. th32ParentProcessID: DWORD,
  41. pcPriClassBase: LONG,
  42. dwFlags: DWORD,
  43. szExeFile: [MAX_PATH]WCHAR,
  44. }
  45. LPPROCESSENTRY32W :: ^PROCESSENTRY32W
  46. THREADENTRY32 :: struct {
  47. dwSize: DWORD,
  48. cntUsage: DWORD,
  49. th32ThreadID: DWORD,
  50. th32OwnerProcessID: DWORD,
  51. tpBasePri: LONG,
  52. tpDeltaPri: LONG,
  53. dwFlags: DWORD,
  54. }
  55. LPTHREADENTRY32 :: ^THREADENTRY32
  56. MODULEENTRY32W :: struct {
  57. dwSize: DWORD,
  58. th32ModuleID: DWORD,
  59. th32ProcessID: DWORD,
  60. GlblcntUsage: DWORD,
  61. ProccntUsage: DWORD,
  62. modBaseAddr: ^BYTE,
  63. modBaseSize: DWORD,
  64. hModule: HMODULE,
  65. szModule: [MAX_MODULE_NAME32 + 1]WCHAR,
  66. szExePath: [MAX_PATH]WCHAR,
  67. }
  68. LPMODULEENTRY32W :: ^MODULEENTRY32W
  69. HEAPLIST32 :: struct {
  70. dwSize: SIZE_T,
  71. th32ProcessID: DWORD,
  72. th32HeapID: ULONG_PTR,
  73. dwFlags: DWORD,
  74. }
  75. LPHEAPLIST32 :: ^HEAPLIST32
  76. HEAPENTRY32 :: struct {
  77. dwSize: SIZE_T,
  78. hHandle: HANDLE,
  79. dwAddress: ULONG_PTR,
  80. dwBlockSize: SIZE_T,
  81. dwFlags: DWORD,
  82. dwLockCount: DWORD,
  83. dwResvd: DWORD,
  84. th32ProcessID: DWORD,
  85. th32HeapID: ULONG_PTR,
  86. }
  87. LPHEAPENTRY32 :: ^HEAPENTRY32