Home › Forums › Discussions › General › TDI FILTER driver › Reply To: TDI FILTER driver
July 2, 2007 at 3:40 pm
#6302
Я выкладывал код в своем посте: Posted:Wed Jun 27, 2007 12:02 am. Он практически так и не изменился, добавились только прерывания..
Не вижу всего кода, но если pBlockFromPagedLookasideList действительно аппокирован из paged pool, то падает вполне закономерно, так как ClientEventReceive вызывается на IRQL_DISPATCH_LEVEL.
У меня pBlockFromPagedLookasideList находится в НЕСТРАНИЧНОЙ ПАМЯТИ(NonPagedPool)! Вот:
g_pPagedLookasideList = ExAllocatePool(NonPagedPool, sizeof(PAGED_LOOKASIDE_LIST));
ExInitializePagedLookasideList(g_pPagedLookasideList, NULL, NULL, 0, sizeof(CLIENTEVENTRECEIVECONTEXT), 'tdis', 0);
InitializeListHead(&g_ClientEventReceiveListHead);
.........
.....
......
.....
pBlockFromPagedLookasideList = ExAllocateFromPagedLookasideList(g_pPagedLookasideList);
memset(pBlockFromPagedLookasideList, 0, sizeof(CLIENTEVENTRECEIVECONTEXT));
InsertHeadList(&g_ClientEventReceiveListHead, &pBlockFromPagedLookasideList->ListEntry);
// ñîõðàíÿåì îðèãèíàë ôóíêöèè â ñòðóêòóðå
pBlockFromPagedLookasideList->EventHandler = ((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventHandler;
// ñîõðàíÿåì îðèãèíàë êîíòåêñòà â ñòðóêòóðå
pBlockFromPagedLookasideList->EventContext = ((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventContext;
((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventHandler = HookedClientEventReceive;
((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventContext = pBlockFromPagedLookasideList;