Reply To: TDI FILTER driver

Home Forums Discussions General TDI FILTER driver Reply To: TDI FILTER driver

#6302
Dmitry_177
Participant

    Я выкладывал код в своем посте: 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;