Взаимодействие драйвера с программой в user mode

Тема в разделе "WASM.NT.KERNEL", создана пользователем twist, 13 мар 2008.

  1. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    Всем доброго времени суток,
    задачка такая: написать прогу которая просто тупо следит за действиями других программ, открытие и закрытие файлов, запись , чтение, создание процессов и т.п., что то на подобие filemon и regmon. Для этих целей написал простенький драйвер который перехватывает соответствующие функции, получает pid и производимые действия, но вот возникла проблема с передачей этих данных проге в userspace которая будет уже обрабатывать их и анализировать. Подскажите пжлста как грамотно передавать эту инфу
    p.s. Для управления драйвером использую ioctl
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    чтения по событию. драйвер алармит его, апа читает.
     
  3. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    n0name
    а можно тут по подробнее, я в этом нелегком деле новичек
     
  4. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    twist
    Можно еще в драйвере в список заносить перехватываемые данные, а в приложении опрашивать драйвер с помощью ioctl каждые, например, 20 мс и если там что-то есть вытаскивать эти данные в юзермод.
     
  5. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    А что вам мешает создать файл и писать в него, или например использовать разделяемую память.

    Не ленимся читать маны:
    http://www.wasm.ru/article.php?article=drvw2k09
    http://www.wasm.ru/article.php?article=drvw2k11

    PS: Модераторы, может стоит создать темку FAQ по дровам для новичков, а то ленятся они юзать поиск, искать книжки умные, которые 100 раз упоминались на форуме, читать статьи...
     
  6. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    такой вариант не прокатит т.к. в перспективе предпологается установка аларма на действия процессов с последующей заморозкой, например процессу разрешено читать/писать в файлы находящиеся в определенном каталоге, если он полез куда то на лево то его дальнейшая судьба определяется или решением юзера или шаблоном
     
  7. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    twist
    Понятно. Тогда попробуй как n0name предложил.
     
  8. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    я не понимаю как сообщить проге что нужно прочитать из драйвера данные
     
  9. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    twist
    n0name же предложил в #2 хороший вариант действовать по событиям
     
  10. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    ну а что значит действовать по событиям?
    ну грубо говоря драйвер отловил процесс который открыл файл, а что мне дальше то делать???

    p.s. аццки торможу
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    читай про Event'ы + поиск по форуму.
     
  12. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    самый простой и надежный способ - хранить все это у себя в буфере и отдавать по ДевицеИоКонтрол-у. Никаких таймаутов, никаких синхронизирующих евентов или пар евентов. Вроде так у руссиновича и есть в его монах. Один минус - при большом наплыве сигналов возможны потери, это не всегда разрешено по ТЗ
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    twist
    Аццки тормозишь. "Драйверы режима ядра: Часть 14", и вообще, в практически любой книге это описано, т.к. базовая техника.
     
  14. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    всем пасиба, читаю про events
     
  15. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    twist
    Вообще еще у Уолтера Они в книге было как использовать общее событие в юзермоде и ядре.
    Если не найдешь, то могу описать и код привести, как это выглядит.
     
  16. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    DDK\src\general\event

    "This sample demonstrates two different ways a Windows NT kernel-mode driver can notify an application about a hardware event. One is event based method and the other is an IRP based method."
     
  17. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    prus
    Да точно , я по началу на эту книжку внимания не обратил т.к. на англицком она, русского варианта в сети не нашел,рассмотрено 2 способа: через общее событие или IRP ,сижу разбираюсь
     
  18. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    http://www.ozon.ru/context/detail/id/3137491/
    http://www.piter.com/book.phtml?978591180057
     
  19. twist

    twist New Member

    Публикаций:
    0
    Регистрация:
    13 мар 2008
    Сообщения:
    9
    эээ..я имел ввиду электронный вид
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    twist
    Закажи, за одно будешь сравнивать с англ вариантом :)