Reply To: TDI FILTER driver

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

#6300

Dmitry_177
Participant

Разобрался я немного с отладчиком… Из него я как понял драйвер валится на этом:
return OldClientEventReceive(pBlockFromPagedLookasideList->EventContext,

ConnectionContext,

ReceiveFlags,

BytesIndicated,

BytesAvailable,

*BytesTaken,

Tsdu,

*IoRequestPacket);`

из функции HookedClientEventReceive, а она вот так выглядит:

NTSTATUS HookedClientEventReceive(IN PVOID  TdiEventContext,

IN CONNECTION_CONTEXT  ConnectionContext,

IN ULONG  ReceiveFlags,

IN ULONG  BytesIndicated,

IN ULONG  BytesAvailable,

OUT ULONG  *BytesTaken,

IN PVOID  Tsdu,

OUT PIRP  *IoRequestPacket)

{

UCHAR	*sduBuffer;

PCLIENTEVENTRECEIVECONTEXT	pBlockFromPagedLookasideList;

OLDCLIENTEVENTRECEIVE		OldClientEventReceive;

_asm  // ýòî ÿ äåëàë äëÿ ïðåðûâàíèÿ, äëÿ îòëàäêè..

{

int    3

}

pBlockFromPagedLookasideList = TdiEventContext;

OldClientEventReceive = pBlockFromPagedLookasideList->EventHandler;

_asm

{

int    3

}

sduBuffer = Tsdu;

DbgPrint("tdi_sniffer TDI_RECEIVE:n");

DbgPrint(sduBuffer);

_asm

{

int    3

}

// âîò òà ýòîì OldClientEventReceive âàëèòñÿ..

return OldClientEventReceive(pBlockFromPagedLookasideList->EventContext,

ConnectionContext,

ReceiveFlags,

BytesIndicated,

BytesAvailable,

*BytesTaken,

Tsdu,

*IoRequestPacket);

}

Вобщем все прерывания срабатывают.. DbgPrint пишет принятый первый пакет только.. А потом драйвет сваливается.. Я как понял на этой строке, но что в ней не так никак не пойму… По идее я присваиваю OldClientEventReceive оригинальный адрес из EventHandler-а а в pBlockFromPagedLookasideList->EventContext по идее содержится оригинальный контекст.. и почему BSOD не понимаю…