MODULEENTRY32是一種計算機結構。
基本介紹
- 中文名:模組入口結構體
- 外文名:MODULEENTRY32
- 成員:dwSize、th32ModuleID等
- 系統要求:Windows CE1.0和更高版本
- 頭檔案:Tlhelp32.h
結構,成員,備註,要求,示例,
結構
Describes an entry from a list of the modules belonging to the specified process.
typedef struct tagMODULEENTRY32 {
DWORD dwSize;
DWORD th32ModuleID;
DWORD th32ProcessID;
DWORD GlblcntUsage;
DWORD ProccntUsage;
BYTE *modBaseAddr;
DWORD modBaseSize;
HMODULE hModule;
TCHAR szModule[MAX_PATH];
TCHAR szExePath[MAX_PATH];
} MODULEENTRY32, *PMODULEENTRY32, *LPMODULEENTRY32;
成員
dwSize
指定結構的長度,以位元組為單位。在調用Module32First功能,設定這個成員SIZEOF(MODULEENTRY32)。如果你不初始化的dwSize,Module32First將失敗。
th32ModuleID
此成員已經不再被使用,通常被設定為1
th32ProcessID
正在檢查的進程標識符。這個成員的內容,可以使用Win32 API的元素
GlblcntUsage
全局模組的使用計數,即模組的總載入次數。通常這一項是沒有意義的,被設定為0xFFFF。
ProccntUsage
全局模組的使用計數(與GlblcntUsage相同)。通常這一項也是沒有意義的,被設定為0xFFFF。
modBaseAddr
模組的基址,在其所屬的進程範圍內。
modBaseSize
模組的大小,單位位元組。
hModule
所屬進程的範圍內,模組句柄。
szModule
NULL結尾的字元串,其中包含模組名。
szExePath
NULL結尾的字元串,其中包含的位置,或模組的路徑。
備註
modBaseAddr和hModule的成員只有在指定的th32ProcessID進程中才有效。
要求
作業系統版本的Windows CE1.0和更高版本。
頭檔案:Tlhelp32.h。
示例
#include <stdio.h>#include <windows.h>#include <tlhelp32.h>int main(int argc, char* argv[]) { HANDLE hSnap; PROCESSENTRY32 pe;//該結構體是用來存放進程ID的 //獲取進程快照 hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //失敗退出程式 if (hSnap==INVALID_HANDLE_VALUE) return 1; //PROCESSENTRY32結構體使用前必須先初始化dwSize成員 pe.dwSize=sizeof(pe); //獲取第一個進程信息 if (Process32First(hSnap, &pe)) { do { MODULEENTRY32 me; HANDLE hMod; if (pe.th32ProcessID==0) continue; //獲取pe.th32ProcessID進程的模組快照 hMod=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe.th32ProcessID); //失敗則直接跳到下一個進程 if (hMod==INVALID_HANDLE_VALUE) continue; //同樣,MODULEENTRY32結構體使用前必須先初始化dwSize成員 me.dwSize = sizeof(me); //獲取該進程的第一個模組信息 if (Module32First(hMod, &me)) printf("%6d %-15s %s\n",pe.th32ProcessID,me.szModule,me.szExePath); CloseHandle(hMod); } while (Process32Next(hSnap,&pe));//獲取下一個進程信息 CloseHandle(hSnap); return 0;}