TDI фильтр + Vista

Тема в разделе "WASM.NT.KERNEL", создана пользователем TSS, 25 авг 2009.

  1. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Написал простенький драйвер-фильтр, в XP все работает, в Vista нет.

    Код аттача(проверки выкинуты):

    Код (Text):
    1. Status = AttachDevice( DriverObject, &FilterDeviceObject, &TcpDeviceObject, L"\\Device\\Tcp" );
    Код (Text):
    1. NTSTATUS AttachDevice( PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT *FilterObject, PDEVICE_OBJECT *OldDevice, PCWSTR DeviceName )
    2. {
    3. ...
    4. Status = IoCreateDevice( DriverObject, 0, NULL, FILE_DEVICE_UNKNOWN, 0, TRUE, FilterObject );
    5. (*FilterObject)->Flags |= DO_DIRECT_IO;
    6. Status = IoAttachDevice( *FilterObject, &TargetDeviceUnicodeString, OldDevice );
    7. ...
    Код обработчика:

    Код (Text):
    1. NTSTATUS DeviceDispatch( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp )
    2. {
    3.     PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation( Irp );
    4.  
    5.     if ( DeviceObject == FilterDeviceObject )
    6.     {
    7.         switch ( IrpStack->MajorFunction )
    8.         {
    9.             case IRP_MJ_INTERNAL_DEVICE_CONTROL:
    10.             {
    11.                 if ( IrpStack->MinorFunction == TDI_SEND )
    12.                 {
    13.                     DbgPrint("TDI_SEND\n");            
    14.                     goto exit;
    15.                 }
    16. ...
    Есть идеи, почему в Висте код не работает?
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Во-первых, в IoCreateDevice() следует выставить FILE_DEVICE_NETWORK и в предпоследнем параметре FALSE. Во-вторых, в чём именно проявляется неработоспособность? В-третьих, слишком мало информации для диагностики ошибки.
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Непомогло.

    Неработоспособность проявляется в том, что я в WinDbg не вижу заветных TDI_SEND, TDI_SET_EVENT_HANDLER и т.д.

    Какая еще информация нужна?
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    А должно было? Я так не думаю.

    Включи отладочный вывод, по умолчанию он выключен
     
  5. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Угу, поправил реестр на висте, все заработало. Thx
     
  6. Ra_

    Ra_ New Member

    Публикаций:
    0
    Регистрация:
    4 мар 2007
    Сообщения:
    289
    off
    встретил фаер - три шестерки :)
    http://www.pctools.com/mirror/6.0.0.66-b-fwinstall.exe