您的位置:首页 > 其它

列举系统中所有被加载的DLL

2006-09-05 20:54 330 查看
void ShowProcessModules(HWND hwnd, DWORD PId)
{

SYSTEM_INFO si;
memset(&si, 0, sizeof(si));
GetSystemInfo( &si );
if( PId == 0)
PId = GetCurrentProcessId();
DWORD LowAddr, HighAddr;
LowAddr = (DWORD)si.lpMinimumApplicationAddress;
HighAddr = (DWORD)si.lpMaximumApplicationAddress;
HANDLE hdl = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,
FALSE, PId );
if (hdl == NULL)
return;
char mapfilename[MAX_PATH] = "unknown";
char tempname[MAX_PATH];
DWORD nSize = sizeof(mapfilename);
DWORD MapAddr, MapAddrto = 0;

for (MapAddr = LowAddr; MapAddr < HighAddr; MapAddr += si.dwAllocationGranularity)
{
GetMappedFileName( hdl, (LPVOID)MapAddr,mapfilename, nSize );
if(MapAddr < MapAddrto)
continue;
if(strlen(mapfilename) == 0)
continue;

for(MapAddrto = MapAddr; ; MapAddrto += si.dwPageSize)
{GetMappedFileName( hdl, (LPVOID)MapAddrto,tempname, nSize );
if(strcmp(tempname, mapfilename) == 0)
continue;
else
break;
}
wsprintf(tempname, "0x%p-0x%p: %s",MapAddr, MapAddrto, mapfilename);
SendMessage(GetDlgItem(hwnd,IDC_LIST1),LB_ADDSTRING,0,(LPARAM)tempname);

}
CloseHandle( hdl );
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐