if (pNewStartHandle->bCanLoad)
{
KdPrint(("ZwSet CanContinue\npOldZwSetSysInfo=%p\n",pOldZwSetSysInfo));
//执行完下面这句代码后竟然又跳回到了本函数的入口
Result = pOldZwSetSysInfo(SystemInformationClass,
SysInfo,
SystemInformationLength);
KdPrint(("Called Old ZwSet\n"));
}
else
Result = STATUS_UNSUCCESSFUL;
if (pNewStartHandle == pStartHandle)
{
pStartHandle = pNewStartHandle->pNext;
}
if (pNewStartHandle->pNext)
{
pNewStartHandle->pNext->pPrevious = pNewStartHandle->pPrevious;
}
if (pNewStartHandle->pPrevious)
{
pNewStartHandle->pPrevious->pNext = pNewStartHandle->pNext;
}
KdPrint(("ZwSet Free:%p\n",pNewStartHandle));
ExFreePoolWithTag(pNewStartHandle,
'kooh');
}
else
{
KdPrint(("Can't get mem"));
Result = pOldZwSetSysInfo(SystemInformationClass,
SysInfo,
SystemInformationLength);
}
}
else
{
Result = pOldZwSetSysInfo(SystemInformationClass,
SysInfo,
SystemInformationLength);
}
}