status=ZwQuerySystemInformation(
SystemProcessesAndThreadsInformation,
NULL,
0,
&ulSize
);
if (status!=STATUS_INFO_LENGTH_MISMATCH)
{
return FALSE;
}
pSystemProcessList= ExAllocatePool(NonPagedPool,ulSize);
if (pSystemProcessList)
{
status=ZwQuerySystemInformation(
SystemProcessesAndThreadsInformation,
pSystemProcessList,
ulSize,
NULL
);
if (!NT_SUCCESS(status))
{
if (DebugOn)
KdPrint(("ZwQuerySystemInformation error:%x %d\r\n",status,RtlNtStatusToDosError(status)));
bRet = FALSE;
}
}
第一个ZwQuerySystemInformation获取需要的大小,返回是成功的。
进入了红色的分支,也就是第二次查询的时候失败了,郁闷啊。。。返回是长度不匹配的错误,也就是那个mismatch-length的错。
另外好像第一个获取大小的时候,那个ulsize好像有几次不一样大。。搞不懂。。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!