Добрый день.
Хочу научиться собирать VXD-драйвер. За исходник взял Filemon434 с Wasm`a (
http://www.wasm.ru/baixado.php?mode=tool&id=283).
1)
ПО и исходники.Пользуюсь VC7 под WindowsXP SP2. На руках есть WDK от Vist`ы.
Что ещё следует установить/найти и какой версии доступно_в_сети/стоит_использовать ?2)
Мои действия. Запустил стандартный батник, с прописными путями
"C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"Перешел в директорию
...\filemon434\vxdНабираю
nmake и в ответ получаю
makefile(14) : fatal error U1052: file '\include\vtoolsd.mak' not found Stop.Заглянул в Makefile
# FILEMON.mak - makefile for VxD FILEMON
PATH=d:\driverstudio\vtoolsd\bin;$(PATH)
DEVICENAME = FILEVXD
DYNAMIC = 1
FRAMEWORK = C
DEBUG = 0
OBJECTS = filemon.OBJ
all: $(DEVICENAME).vxd
copy *.vxd ..\exe\release\.
copy *.vxd ..\exe\debug\.
!include $(VTOOLSD)\include\vtoolsd.mak
!include $(VTOOLSD)\include\vxdtarg.mak
filemon.OBJ: filemon.c filemon.h
Прикинул, что на диске D нет driverstudio. Её стоит устанавливать ?
Вообще,
как должен выглядеть мой Makefile ? Объясните, за что отвечают строчки.
Моя последовательность действий при сборке VXD ?==============================
P.S. Для чего всё это затеял.
Есть программа, которая пишет логи. Каждый день в определенной папке создается файл с именем YYYY-MM-DD.txt текущей даты.
Требуется перехватывать данные и писать их в другой файл, возможно, на другом сервере.
Перехват должен осуществляться только для данных соответствующих следующим критериям:
1) записываемые файлы расположены в специальной директории (настраиваемый параметр)
2) файл должен записываться определенным процессом, имя которого так же является настраиваемым параметром.
Проверьте мои рассуждения:
Просмотрел исходники Filemon. Как оказалось данные на
ListView передаются в текстовом виде через глобальный буфер. По таймеру буфер обновляется. Данные поступают через функцию
DeviceIoControl, параметрами которой являются: буфер с длиной и хендл на устройство "\\.\FILEVXD.VXD"
Полез в исходники FILEVXD.VXD. Значит, там есть небольшой стек страниц, которые используются для логирования. По команде
IOCTL_FILEMON_GETSTATS через функцию
OnW32Deviceiocontrol() вытаскивается последняя страница и передается вверх в программу Filemon. Сами страницы создаются и наполняются в хуке FilemonHookProc(). Последний параметр переданый в хук - указатель на структуры IOREQ. В этой структуре есть:
- флаги указывающие на запись в файл (ir_flags), идентификатор процесса(ir_pid), хендл записываемого файла(ir_fh) - то есть всё что нужно для моей фильтрации.
- указатель на буфер (ir_data) и длина буфера (ir_length).
Хочу модифицировать vxd так, чтоб он отфильтровывал данные и передовал их наверх в прогу. Там уже буду думать куда и как сохранять backup.
Но сейчас надо разобраться с компиляцией самого FILEVXD.VXD