ZwQuerySystemInformation函数的SystemProcessesAndThreadsInformation功能号实现驱动枚举进程:第一个参数为传入功能号, 第二个参数为输出进程信息的缓冲区, 为一个指向SYSTEM_PROCESS_INFORMATION结构体指针,结构的NextEntryOffset成员指向下一项目, 遍历此链表即可枚举进程,指向0则表示已达链表尾部第三个参数为返回长度, 第四参数为已返回的长度。代码:
/*++
*
* Author : Chinghoi
* Blog : http://blog.csdn.net/chinghoi
*
* Description:
* 代码片段摘自:ixer0.11开源版-ZwQuerySystemInformation枚举进程
--*/
NTSTATUS EnumProcessByZwQuerySysInfo()
{
PVOID pBuftmp = NULL;
ULONG dwRetSize = 0;
NTSTATUS status = STATUS_SUCCESS;
PSYSTEM_PROCESS_INFORMATION pSysProcInfo = NULL;
PEPROCESS pEproc;
//获取大小
status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, NULL, 0, &dwRetSize);
//申请内存
pBuftmp = ExAllocatePool(NonPagedPool, dwRetSize); //dwRetSize 需要的大小
if (pBuftmp != NULL)
{
//再次执行,将枚举结果放到指定的内存区域
status &#