Требуется перехватить WriteFile|ReadFile и CreateFile, и отправить инф. по Com-порту. С Com-портом всё ясно, а вот как сделать перехват?
Спасибо за линки. А вот допустим мне нужно чтение/запись только некоторых файлов перехватывать, а остальные передавать стандартным функциям винды. Как корректно это сделать? Мне кажется, что используя те же функции ReadFile|WriteFile у себя в драйвере получится никому не нужная рекурсия. Я прав?
А что значит перехватывать? Просто вести лог о кол-ве вызовов к определенным файлам или осуществлять иногда запрет доступа???
riban? а что мешает отсеивать по парамтру? При работе драйвера рекурсия НЕ возникает, т.к. перехват выполняется только для функций R-3.
riban а что тебе к примеру мешает организовать в драйвере фильтр ? Если хочешь мониторить все файлы, даже те, что юзает ядро и к которым по сети обращаются, то тебе лучше перехватить функции типа IoCreateFile.. но только методом сплайсинга, иначе хрен его знает как.
IoCreateFile покатит, для чтения самый надежный IoPageRead, хотя и поймать не всегда удаётся. Это всё злой кэш-менеджер. Наверняка не отловиш. Когда я делал самым надёжным оказалось CCRead CCWrite - тоже так варворски перехватывать приходится, и префикс и суффикс ставить надо. А если файл спроецирован, то чтение/запись не отловить. Хотя, если Ты читаешь и страница не в памяти, то по PageFault она подгрузиться по IoPageRead... что-то я уже ушел... Если удасться как нить отловить на 100% или ближе чтение запись писюкни сюда plz
Чтение из файла с диска отлавливается на 100% путем захучивания IofCallDriver/IofCompleteRequest. Я сам делал. То же самое,видимо, можно сказать и про запись.
PavPS Нужно сделать не совсем заперт доступа. Я написал несложную программу под микроконтроллер, обмен с компом идёт по COM-интерфейсу. Мне нужно вместо каких-то байт в файлах на диске подставлять байты из микроконтроллера.
PavPS вот как раз эта функция тебе и не нужна, если не собираешься отлавливать мапинг файловый, а судя по вопросу эта задача как раз таки и не ставилась. а что касается на сто проц отлова, тебе нужно хучить дравер иоктлы файловой системы, ну , или непосредственно самого функционального девайса, кароче драйвер физического диска, это уж точно сканает, если файл планиркется быть скинутым на диск. в противном случае, отлавливаешь функции, работающие с мапингом, определяешь диапазон памяти, ставишь на эту память атрибут ридонли и обработчик на #GP так и ловишь, забыл Debug Api ??????