Нужно перехватывать регистрацию TDI_EVENT_RECEIVE event'а и менять указатель на свой... Ловим: MajorFunction=IRP_INTERNAL_DEVICE_CONTROL MinorFunction=TDI_SET_EVENT_HANDLER Parameters->EventType=TDI_EVENT_RECEIVE Из DDK я как понял в Parameters->EventHandler будет указатель на callback функцию ClientEventReceive, но как его поменять на свой? может так?: Код (Text): OldClientEventReceive = ((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventHandler; if (OldClientEventReceive) { ((PTDI_REQUEST_KERNEL_SET_EVENT)&irpStack->Parameters)->EventHandler = HookedClientEventReceive; } А еще тогда в HookedClientEventReceive нужно вызывать оригинал: Код (Text): return OldClientEventReceive(TdiEventContext, ConnectionContext, ReceiveFlags, BytesIndicated, BytesAvailable, BytesTaken, Tsdu, IoRequestPacket); Как тогда все оригинальные адреса callback функций сохранять для разных потоков вызвавших TDI_SET_EVENT_HANDLER чтобы потом их вызывать в HookedClientEventReceive? Или может есть какойнибудь способ передавать этот адрес в саму функцию HookedClientEventReceive?