Здравствуйте Титаренко Алексей Викторович, Вы писали:
ТАВ>Может кто знает? Я уже отчаялся...
ТАВ>Слил исходник Файлового Монитора FileMon c www.sysinternals.com
ТАВ>Решил переделать под себя...
ТАВ>Слил 98DDK... Поставил Numega DriverStudio 2.5... чтобы на С писать...
ТАВ>Закоротил фильтр в проге на *.crt.doc чтобы щемить обращения тольоко к нему...
ТАВ>Потом в исходнике VxD При case IFSFN_WRITE: пытаюсь слить с ir_data (в ifs.h есть описалово что это указатель на UserBuffer (Кажется DS:eDX)), пытаюсь сохранить его в файл, благо размер считанных данных я знаю (там же ir_size)
ТАВ> Action = ACTION_IFEXISTS_OPEN | ACTION_IFNOTEXISTS_CREATE;
ТАВ> if (fn != IFSFN_READ) {
ТАВ> R0_WriteFile(TRUE,
ТАВ> TempHandle = R0_OpenCreateFile(TRUE,
ТАВ> "auto.crt.dat",
ТАВ> OPEN_ACCESS_READWRITE,
ТАВ> ATTR_NORMAL,
ТАВ> Action,
ТАВ> R0_NO_CACHE,
ТАВ> retval,
ТАВ> ACTION_REPLACED),
ТАВ> origir->ir_data,
ТАВ> origir->ir_length,
ТАВ> R0_GetFileSize(TempHandle,retval),
ТАВ> retval);
ТАВ> R0_CloseFile(TempHandle,retval);
ТАВ> };
ТАВ>И после этого валюсь в Синий экран (98 Винда)....
ТАВ>Исходники по запросу titarenko@f-trade.ru...
ТАВ>Просто не пойму... тот ли это буфер...
Проблема в том что ты выполняешь файловые операции прямо из обработчика IFSFN_WRITE...
Организуй очередь из буферов, которые ты хочешь сохранить в файл, и в IFSFN_WRITE только добавляй в нее элементы, а собственно в файл пиши из потока, созданного VWIN32_CreateRing0Thread, Кроме того, не уверен что из IFSFN_WRITE можно вызывать _HeapAllocate, так что предвариельно создай пул под буферы...
Удачи!
Володя