在学习并调试旁视列表的时候发现服务可以创建但是无法启动,如下
问题代码块如下
//旁视列表
PNPAGED_LOOKASIDE_LIST plookaside = NULL;
plookaside = (PNPAGED_LOOKASIDE_LIST)ExAllocatePoolWithTag(NonPagedPool, sizeof(NPAGED_LOOKASIDE_LIST), 'test');
memset(plookaside, 0, sizeof(NPAGED_LOOKASIDE_LIST));
ExInitializeNPagedLookasideList(plookaside, NULL, NULL, POOL_NX_ALLOCATION, 128, 'tag2', 0);
KdBreakPoint();
PVOID look = ExAllocateFromNPagedLookasideList(plookaside);
KdBreakPoint();
if (look == NULL)
{
DbgPrint("allocate fail!\n");
}
else
{
DbgPrint("allocate mem:%p", look);
}
ExFreeToNPagedLookasideList(plookaside, look);
look = NULL;
ExDeleteNPagedLookasideList(look);
DbgPrint("initialize mem!\n");
注释掉PVOID look = ExAllocateFromNPagedLookasideList(plookaside);和ExFreeToNPagedLookasideList(plookaside, look);驱动可以正常启动,请问是为什么?如何解决?