Отловить TDI_QUERY_INFORMATION
От: Andrey.Katkov  
Дата: 18.02.08 11:07
Оценка:
Доброго времени суток!

Пишу TDI filter драйвер. Через IoAttachDevice аттачусь к tcp\ip. И соответсвенно отлавливаю приходящие ему запросы, после чего либо отправляю их дальше по стэку, либо не отправляю Все запросы отлавливаются следующим образом:


case IRP_MJ_INTERNAL_DEVICE_CONTROL:
...
if(TDI_SET_EVENT_HANDLER == irps->MinorFunction)
      {
        pid = (ULONG)PsGetCurrentProcessId();

        if(g_buffer.size<122 && g_hEventPacketResived != NULL)// криво с такими константами
        {    
          // основную инфу записали
          g_buffer.buff[g_buffer.size].PID = pid;
          g_buffer.buff[g_buffer.size].source = ETDI_SET_EVENT_HANDLER;

          g_buffer.size++;
          // устанавливаем событие о том что пришёл пакет
          KeSetEvent(g_hEventPacketResived, 
            0,
            FALSE);

        }
      }


Потом считываю инфу через IOCTL по факту выставления события. Работает для почти всех команд (TDI_SEND к примеру и т.п.) Но для некоторых не ловится — например для TDI_QUERY_INFORMATION никак не ловится. Программа TDIMon — успешно отлавливает...

Подскажите плиз — где собака зарыта?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.