Как подключить драйвер к стеку устройств?

Тема в разделе "WASM.NT.KERNEL", создана пользователем mohito, 12 мар 2007.

  1. quirk

    quirk New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    12
    зачем все тогда IoAttachDevice, там по ходу новое устройство для обработки нужно?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    IoGetDevicePointer вернет просто верхнее устройство.
    А IoAttachDevice еще и подключит новое... конечно, можно вручную все сделать, подменив указатели AttachedDevice и DeviceObjectExtension->AttachedTo
     
  3. mohito

    mohito New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2007
    Сообщения:
    10
    quirk
    Извини, не верно понял.
     
  4. ksu_ant

    ksu_ant New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    273
    mohito
    Рад был помочь :derisive:
     
  5. Denwer

    Denwer New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2006
    Сообщения:
    104
    Майкрософт советует всеже использовать приаатачивание к стеку, а не хукание. Но место, куда будет приаттачен драйвер устанавливается путем изменения очередности загрузки, что иногда проблематично. Нужно смотреть кто когда загрузился. При хукании мажорных функций можно выбрать именно нужный дравер обжект.
    Код (Text):
    1.     UNICODE_STRING TcpipName;
    2.  
    3.     PDRIVER_OBJECT drvobj;
    4.  
    5.     NTSTATUS status;
    6.  
    7.     RtlInitUnicodeString ( &TcpipName, L"\\Driver\\Tcpip" );
    8.  
    9.     status = ObReferenceObjectByName( &TcpipName,
    10.                             OBJ_CASE_INSENSITIVE,
    11.                             NULL,
    12.                             0,
    13.                             *WinXP::IoDriverObjectType,
    14.                             KernelMode,                            
    15.                             NULL,
    16.                             (PVOID*)&drvobj);
    Вот так мы можем получить самый нижний драйвер и у него сделать замену мажорных функций.