Re: VtoolsD Крик души
От: Vovkos Россия https://ioninja.com
Дата: 12.01.02 19:19
Оценка: 2 (1)
Здравствуйте Титаренко Алексей Викторович, Вы писали:

ТАВ>Может кто знает? Я уже отчаялся...

ТАВ>Слил исходник Файлового Монитора 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, так что предвариельно создай пул под буферы...


Удачи!
Володя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.