MODULEENTRY32

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結尾的字元串,其中包含的位置,或模組的路徑。

備註

modBaseAddrhModule的成員只有在指定的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;}

相關詞條

熱門詞條

聯絡我們