Как правильно прервать выполнение ClientEventReceive? Делаю перехват Код (Text): NTSTATUS NewClientEventReceive(IN PVOID EventContext, IN CONNECTION_CONTEXT ConnectionContext, IN ULONG Flags, IN ULONG BytesIndicated, IN ULONG BytesAvailable, OUT ULONG *BytesTaken, IN PVOID Tsdu, OUT PIRP *IoRequestPacket ) { NTSTATUS status; DbgPrint("----------NewClientEventReceive-------------"); // вот тут нужно прервать прием данных status = OldClientEventReceive(EventContext, ConnectionContext, Flags, BytesIndicated, BytesAvailable, BytesTaken, Tsdu, IoRequestPacket); return status; }
А вызвать при этом завершение обработки или обо всем этом надо писать. Посмотри что делает OldClientEventReceive (как завершает обработку) и сделай так же
угу )) в ассемблере я не силен, а в кодах NT4 я нашел только пустые функции ClientEventReceive, ClientEventChainedReceive, ... ну и нашел грязный способ остановки приема, установив BytesTaken в 0 ) Я вообще не пойму как этот механизм работает, зачем например TDI_SET_EVENT_HANDLER вызывается постоянно? ведь callback всегда один и тот же смотрел код tdifw там тоже в TDI_SET_EVENT_HANDLER запоминается старый обработчик и ставится новый, а при вызове также вызывается старый, где там фильтрация я не увидел.