如何使用函数PsLookupProcessByProcessId()和我从用户空间获得的进程ID(DWORD pid)?
我编写了一个用户空间c ++应用程序来获取另一个应用程序的进程ID(例如calc.exe)并使用DeviceIoControl我可以通过我创建的结构成功地将pid发送给驱动程序。
DbgPrint("PID received : %i", pInp->pid);
打印出该过程的正确pid。 但是在做的时候:
PsLookupProcessByProcessId(pInp->pid, eProcess);
我收到警告:
C4022:'PsLookupProcessByProcessId':实际参数1的指针不匹配
警告被视为错误,并且不会让我编译。 我查看了'PsLookupProcessByProcessId'的文档,并说它需要第一个参数的'句柄'。那么,在这种情况下,我将如何使用从用户空间应用程序发送的DWORD pid获取句柄?
答案 0 :(得分:0)
PEPROCESS eProcess = NULL;
PsLookupProcessByProcessId((HANDLE)pInp->pid, &eProcess);
“指定进程的进程ID。” - > HANDLE听起来很混乱,在这种情况下它不是真正的“HANDLE”对象。