tlhelp32.h
来自「这是VCF框架的代码」· C头文件 代码 · 共 319 行
H
319 行
/*****************************************************************************\* ** tlhelp32.h - WIN32 tool help functions, types, and definitions ** ** Version 1.0 ** ** NOTE: windows.h/winbase.h must be #included first ** ** Copyright (c) Microsoft Corp. All rights reserved. ** *\*****************************************************************************/#ifndef _INC_TOOLHELP32#define _INC_TOOLHELP32#if _MSC_VER > 1000#pragma once#endif#ifdef __cplusplusextern "C" { /* Assume C declarations for C++ */#endif /* __cplusplus */#define MAX_MODULE_NAME32 255/****** Shapshot function **********************************************/HANDLEWINAPICreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID );//// The th32ProcessID argument is only used if TH32CS_SNAPHEAPLIST or// TH32CS_SNAPMODULE is specified. th32ProcessID == 0 means the current// process.//// NOTE that all of the snapshots are global except for the heap and module// lists which are process specific. To enumerate the heap or module// state for all WIN32 processes call with TH32CS_SNAPALL and the// current process. Then for each process in the TH32CS_SNAPPROCESS// list that isn't the current process, do a call with just// TH32CS_SNAPHEAPLIST and/or TH32CS_SNAPMODULE.//// dwFlags//#define TH32CS_SNAPHEAPLIST 0x00000001#define TH32CS_SNAPPROCESS 0x00000002#define TH32CS_SNAPTHREAD 0x00000004#define TH32CS_SNAPMODULE 0x00000008#define TH32CS_SNAPMODULE32 0x00000010#define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)#define TH32CS_INHERIT 0x80000000//// Use CloseHandle to destroy the snapshot///****** heap walking ***************************************************/typedef struct tagHEAPLIST32{ SIZE_T dwSize; DWORD th32ProcessID; // owning process ULONG_PTR th32HeapID; // heap (in owning process's context!) DWORD dwFlags;} HEAPLIST32;typedef HEAPLIST32 * PHEAPLIST32;typedef HEAPLIST32 * LPHEAPLIST32;//// dwFlags//#define HF32_DEFAULT 1 // process's default heap#define HF32_SHARED 2 // is shared heapBOOLWINAPIHeap32ListFirst( HANDLE hSnapshot, LPHEAPLIST32 lphl );BOOLWINAPIHeap32ListNext( HANDLE hSnapshot, LPHEAPLIST32 lphl );typedef struct tagHEAPENTRY32{ SIZE_T dwSize; HANDLE hHandle; // Handle of this heap block ULONG_PTR dwAddress; // Linear address of start of block SIZE_T dwBlockSize; // Size of block in bytes DWORD dwFlags; DWORD dwLockCount; DWORD dwResvd; DWORD th32ProcessID; // owning process ULONG_PTR th32HeapID; // heap block is in} HEAPENTRY32;typedef HEAPENTRY32 * PHEAPENTRY32;typedef HEAPENTRY32 * LPHEAPENTRY32;//// dwFlags//#define LF32_FIXED 0x00000001#define LF32_FREE 0x00000002#define LF32_MOVEABLE 0x00000004BOOLWINAPIHeap32First( LPHEAPENTRY32 lphe, DWORD th32ProcessID, ULONG_PTR th32HeapID );BOOLWINAPIHeap32Next( LPHEAPENTRY32 lphe );BOOLWINAPIToolhelp32ReadProcessMemory( DWORD th32ProcessID, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T cbRead, SIZE_T *lpNumberOfBytesRead );/***** Process walking *************************************************/typedef struct tagPROCESSENTRY32W{ DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; // this process ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; // associated exe DWORD cntThreads; DWORD th32ParentProcessID; // this process's parent process LONG pcPriClassBase; // Base priority of process's threads DWORD dwFlags; WCHAR szExeFile[MAX_PATH]; // Path} PROCESSENTRY32W;typedef PROCESSENTRY32W * PPROCESSENTRY32W;typedef PROCESSENTRY32W * LPPROCESSENTRY32W;BOOLWINAPIProcess32FirstW( HANDLE hSnapshot, LPPROCESSENTRY32W lppe );BOOLWINAPIProcess32NextW( HANDLE hSnapshot, LPPROCESSENTRY32W lppe );typedef struct tagPROCESSENTRY32{ DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; // this process ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; // associated exe DWORD cntThreads; DWORD th32ParentProcessID; // this process's parent process LONG pcPriClassBase; // Base priority of process's threads DWORD dwFlags; CHAR szExeFile[MAX_PATH]; // Path} PROCESSENTRY32;typedef PROCESSENTRY32 * PPROCESSENTRY32;typedef PROCESSENTRY32 * LPPROCESSENTRY32;BOOLWINAPIProcess32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe );BOOLWINAPIProcess32Next( HANDLE hSnapshot, LPPROCESSENTRY32 lppe );#ifdef UNICODE#define Process32First Process32FirstW#define Process32Next Process32NextW#define PROCESSENTRY32 PROCESSENTRY32W#define PPROCESSENTRY32 PPROCESSENTRY32W#define LPPROCESSENTRY32 LPPROCESSENTRY32W#endif // !UNICODE/***** Thread walking **************************************************/typedef struct tagTHREADENTRY32{ DWORD dwSize; DWORD cntUsage; DWORD th32ThreadID; // this thread DWORD th32OwnerProcessID; // Process this thread is associated with LONG tpBasePri; LONG tpDeltaPri; DWORD dwFlags;} THREADENTRY32;typedef THREADENTRY32 * PTHREADENTRY32;typedef THREADENTRY32 * LPTHREADENTRY32;BOOLWINAPIThread32First( HANDLE hSnapshot, LPTHREADENTRY32 lpte );BOOLWINAPIThread32Next( HANDLE hSnapshot, LPTHREADENTRY32 lpte );/***** Module walking *************************************************/typedef struct tagMODULEENTRY32W{ DWORD dwSize; DWORD th32ModuleID; // This module DWORD th32ProcessID; // owning process DWORD GlblcntUsage; // Global usage count on the module DWORD ProccntUsage; // Module usage count in th32ProcessID's context BYTE * modBaseAddr; // Base address of module in th32ProcessID's context DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr HMODULE hModule; // The hModule of this module in th32ProcessID's context WCHAR szModule[MAX_MODULE_NAME32 + 1]; WCHAR szExePath[MAX_PATH];} MODULEENTRY32W;typedef MODULEENTRY32W * PMODULEENTRY32W;typedef MODULEENTRY32W * LPMODULEENTRY32W;BOOLWINAPIModule32FirstW( HANDLE hSnapshot, LPMODULEENTRY32W lpme );BOOLWINAPIModule32NextW( HANDLE hSnapshot, LPMODULEENTRY32W lpme );typedef struct tagMODULEENTRY32{ DWORD dwSize; DWORD th32ModuleID; // This module DWORD th32ProcessID; // owning process DWORD GlblcntUsage; // Global usage count on the module DWORD ProccntUsage; // Module usage count in th32ProcessID's context BYTE * modBaseAddr; // Base address of module in th32ProcessID's context DWORD modBaseSize; // Size in bytes of module starting at modBaseAddr HMODULE hModule; // The hModule of this module in th32ProcessID's context char szModule[MAX_MODULE_NAME32 + 1]; char szExePath[MAX_PATH];} MODULEENTRY32;typedef MODULEENTRY32 * PMODULEENTRY32;typedef MODULEENTRY32 * LPMODULEENTRY32;//// NOTE CAREFULLY that the modBaseAddr and hModule fields are valid ONLY// in th32ProcessID's process context.//BOOLWINAPIModule32First( HANDLE hSnapshot, LPMODULEENTRY32 lpme );BOOLWINAPIModule32Next( HANDLE hSnapshot, LPMODULEENTRY32 lpme );#ifdef UNICODE#define Module32First Module32FirstW#define Module32Next Module32NextW#define MODULEENTRY32 MODULEENTRY32W#define PMODULEENTRY32 PMODULEENTRY32W#define LPMODULEENTRY32 LPMODULEENTRY32W#endif // !UNICODE#ifdef __cplusplus}#endif#endif // _INC_TOOLHELP32
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?