能力值:
( LV2,RANK:10 )
|
-
-
2 楼
VOID GetProcessInformation(char ( * sOutProcessInformation)[30] ) //获取进程列表
{
HANDLE hSnapshot;
PROCESSENTRY32 stProcess;
BOOL lReturnVaule;
int i = 0;
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS ,0);
lReturnVaule = Process32First(hSnapshot , &stProcess);
while(lReturnVaule)
{
sprintf(sOutProcessInformation[i++] , "%d:%s--%d" ,
i,stProcess.szExeFile,stProcess.th32ProcessID);
lReturnVaule = Process32Next(hSnapshot ,&stProcess);
}
}
VOID ShowProcess(char (* ShowPrcInf)[30]) //显示进程列表
{
for(int i = 0; ShowPrcInf[i][0] != NULL ; i ++ )
{
puts(ShowPrcInf[i]);
}
}
DWORD GetProessId(DWORD lpProessNum) //通过标号获取进程ID
{
HANDLE Snatshot = NULL;
DWORD dwProessId = 0;;
PROCESSENTRY32 StructProess ;
DWORD i = 0;
Snatshot = CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS,0);
BOOL ReturnValue = Process32First(
Snatshot , &StructProess);
while(ReturnValue)
{
if(i == lpProessNum)
{
dwProessId = StructProess.th32ProcessID ;
return dwProessId;
}
ReturnValue = Process32Next(
Snatshot , &StructProess );
i++;
}
CloseHandle(Snatshot);
return FALSE;
}
上面三个函数是我从自己曾经写过的一个工程中提取出来的,作用是通过调用API获取进程快照,然后遍历进程,获取信息,然后另外一个函数获取进程ID。 那详细信息里面包含ID。
这是一种方法,另一种方法是你可以写驱动在0环,遍历进程链表,在Eprocess结构体里面有记录进程ID。。。 这种方法比较繁琐一些,不详解了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
已知。利用ZwQuerySystemInformation。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
[QUOTE=TzdnerC;1097785]VOID GetProcessInformation(char ( * sOutProcessInformation)[30] ) //获取进程列表
{
HANDLE hSnapshot;
PROCESSENTRY32 stProcess;
BOOL lReturnVa...[/QUOTE]
谢谢。我用的驱动写的
|
|
|